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 := 1 to Len do begin //Пропускаем разделители. 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) then begin //Вычисляем длину слова. LenW := i - Pos1 + 1; //Выделяем слово. StrW := Copy(S, Pos1, LenW); //Если слово совпадает с текущим наибольшим по длине, //тогда увеличиваем счётчик. if StrW = StrWMax then begin Cnt := Cnt + 1; end else if LenW > LenWMax then begin //Если это очередное слово длиннее всех ранее найденных слов, то //запоминаем его и его длину и сбрасываем счётчик. StrWMax := StrW; LenWMax := LenW; Cnt := 1; end; end; end; //Показываем результат. if StrWMax <> '' then begin Writeln('Первое из самых длинных слов: "', StrWMax, '".'); Writeln('Это слово встречается в тексе ', Cnt, ' раз.'); end else begin Writeln('В строке нет слов.'); end; Writeln('Повторить - Enter, выход - любой символ + Enter.'); Readln(S); until S <> ''; end.
Находит саммое длинное слово