program Project1;
const
Fn = 'file.txt';
(*Список разделителей слов.*)
D = [' ', '.', ',', ':', ';', '!', '?', '-', #9, #10, #13];
var
F : Text;
S, WordMax : String;
i, j, P1, LenS, Len, LenMax : Integer;
begin
Assign(F, Fn);
Reset(F);
j := 0;
while not Eof(F) do begin
(*Номер очередной строки.*)
j := j + 1;
(*Переход на следующую строку для всех строк, кроме первой.*)
if j > 1 then Readln(F);
Read(F, S);
LenS := Length(S);
P1 := 0;
LenMax := 0;
WordMax := '';
(*Перебор символов прочитанной строки.*)
for i := 1 to LenS do begin
(*Пропускаем разделители.*)
if S[i] in D then Continue;
(*Отслеживаем начало слова.*)
if (i = 1) or (S[i - 1] in D) then
P1 := i
;
(*Отслеживаем конец слова.*)
if (i = LenS) or (S[i + 1] in D) then begin
(*Длина слова.*)
Len := i - P1 + 1;
(*Если длина слова наибольшая среди уже просмотренных слов,
то выбираем текущее слово, как максимальное по длине.*)
if Len > LenMax then begin
LenMax := Len;
WordMax := Copy(S, P1, Len);
end;
end;
end;
if LenMax > 0 then
Writeln('Строка N', j, ': ', WordMax)
else
Writeln('Строка N', j, ': В строке нет слов.')
;
end;
Close(F);
if j = 0 then
Writeln('Файл пуст.')
;
Readln;
end.