Дан файл,содержащий текс на русском языке. Определить,сколько раз встречается в нем самое короткое слово — Pascal(Паскаль)

uses crt;
const c=['.',',','?',';',':','!'];{разделители в тексте, не все, надо добавить}
procedure Convert(var a:string);{ковертация русских символов из ANSI(в файле) в ASCII(в Паскале)}
var i:integer;
begin
for i:=1 to length(a) do
if ord(a[i]) in [192..239] then a[i]:=chr(ord(a[i])-64)
else if ord(a[i]) in [240..255] then a[i]:=chr(ord(a[i])-16)
else if ord(a[i])=168 then a[i]:=chr(ord(240))
else if ord(a[i])=184 then a[i]:=chr(ord(241));
end;
procedure Format(var a:string);{форматирование строки для создания массива}
var i:byte;
begin
for i:=1 to length(a) do
if  a[i] in c then a[i]:=' ';{заменим разделители на пробелы}
while pos('  ',a)>0 do   {в кавычках 2!!! пробела, не напиши 1}
delete(a,pos('  ',a),1); {по одному удаляем, пока не останется только один}
if a[length(a)]=' 'then a:=copy(a,1,length(a)-1);{если в конце пробел, обрезаем строку}
end;
var f:text;{файл}
    s,x:string;{строка для обработки и строка-буфер при сортировке обменом}
    s1:array[1..100] of string;{массив строк-слов}
    i,j,m,k,kol:integer;
begin
clrscr;
assign(f,'file1.txt');
reset(f);
{создаем массив слов}
m:=1;
while not eof(f) do
 begin
  readln(f,s);{читаем строку}
  Convert(s);{конвертируем}
  Format(s);{форматируем}
  for i:=1 to length(s) do
   begin
    if s[i]=' ' then m:=m+1{если пробел, новое слово}
    else s1[m]:=s1[m]+s[i];{иначе составляем слово из букаф}
   end;
 end;
close(f);
for i:=1 to m do write(s1[i],' ');{выведем содержимое файла на экран, можно это убрать}
writeln;
for i:=1 to m-1 do      {сортируем по возрастанию длины слов}
for k:=i+1 to m do
if length(s1[i])>length(s1[k])then
   begin
      x:=s1[i];
      s1[i]:=s1[k];
      s1[k]:=x;
   end;
for i:=1 to m do write(s1[i],' ');{выводим, тоже можно убрать}
writeln;
kol:=0;
for i:=1 to m do
if s1[i]=s1[1] then kol:=kol+1;{считаем сколько раз самое короткое слово=первому}
write('samoe korotkoe slovo: ',s1[1],' vstrechaetsa ',kol,' raz(a)');
readln
end.
Вложения

Leave a Comment

37 − 29 =