program Project1;
const
//Множество разделителей слов.
D =[' ','.',',',':',';','!','?','-', #9, #10, #13];
var
S, StrW, StrWMax :String;
i, Pos1, Len, LenW, LenWMax, Cnt :Integer;
begin
repeat
Writeln('Задайте текст:');
Readln(S);
//Обработка текста.
Len := Length(S);
LenWMax :=0;
StrWMax :='';
Cnt :=0;
Pos1 :=0;
for i :=1to Len dobegin
//Пропускаем разделители.
if S[i]in D then Continue;
//Отслеживаем начало слова.
if(i =1)or(S[i -1]in D)then Pos1 := i;
//Отслеживаем конец слова.
if(i = Len)or(S[i +1]in D)thenbegin
//Вычисляем длину слова.
LenW := i - Pos1 +1;
//Выделяем слово.
StrW := Copy(S, Pos1, LenW);
//Если слово совпадает с текущим наибольшим по длине,
//тогда увеличиваем счётчик.
if StrW = StrWMax thenbegin
Cnt := Cnt +1;
endelseif LenW > LenWMax thenbegin
//Если это очередное слово длиннее всех ранее найденных слов, то
//запоминаем его и его длину и сбрасываем счётчик.
StrWMax := StrW;
LenWMax := LenW;
Cnt :=1;
end;
end;
end;
//Показываем результат.
if StrWMax <> ''thenbegin
Writeln('Первое из самых длинных слов: "', StrWMax,'".');
Writeln('Это слово встречается в тексе ', Cnt,' раз.');
endelsebegin
Writeln('В строке нет слов.');
end;
Writeln('Повторить - Enter, выход - любой символ + Enter.');
Readln(S);
until S <> '';
end.
Находит саммое длинное слово