Вывести последнее слово текста наименьшей длины

Хисамов Айбулат

Дан текстовый файл. Вывести последнее слово текста наименьшей длины. Словом считать набор символов, не содержащий пробелов и ограниченный пробелами или началом/концом строки.
1 ответ

Хисамов Айбулат

Можно например так.
uses crt;
var f:text;
    s,s1,sm:string;
    i,k,n,mn:byte;
begin
clrscr;
assign(f,'input.txt');
reset(f);
mn:=255;
sm:='';
while not eof(f) do
 begin
  readln(f,s);
  writeln(s);
  n:=length(s);
  i:=1;
  while i<=n do
  if (s[i]<>' ')and ((i=1)or(s[i-1]=' '))then{если буква, а перед ней пробел, или она первая}
   begin
    k:=i;
    s1:='';
    while (k<=n)and(s[k]<>' ') do {пока не пробел и не конец строки}
     begin
      s1:=s1+s[k];{составляем слово}
      k:=k+1;{идем вперед}
     end;
    if length(s1)<=mn then
     begin
      mn:=length(s1);
      sm:=s1;
     end;
    i:=i+length(s1);{перепрыгиваем}
   end
  else i:=i+1;{пропускаем пробелы}
 end;
close(f);
write('Самое короткое слово с конца=',sm,' его длина=',mn);
readln
end.