Дана строка, содержащая пробелы. Найдите в ней самое длинное слово, выведите это слово и его длину. Если таких слов несколько, выведите первое из них.

Дана строка, содержащая пробелы. Найдите в ней самое длинное слово, выведите это слово и его длину. Если таких слов несколько, выведите первое из них.
Гость
Ответ(ы) на вопрос:
Гость
procedure GetWord(s:string; var from:integer; var w:string; var len:integer); { Ищет в строке s слово, начиная с позиции from. Если слово w найдено, from будет указывать на его начало, а в len будет находиться длина эого слова. если слово не найдено, w='', len=0 Слова раздеяются минимум одним пробелом, за исключением первого и последнего слова, у которых пробел может находиться только с одной стороны. } var   i,n:integer;   stop:Boolean; begin   n:=Length(s); i:=from; stop:=false;   while (i<=n) and (not stop) do     if s[i]=' ' then Inc(i) else stop:=true;   if i>n then begin len:=0; w:='' end   else begin     from:=i; stop:=false;     while (i<=n) and (not stop) do     if s[i]<>' ' then Inc(i) else stop:=true;     if i>n then len:=n-from+1 else len:=i-from;     w:=Copy(s,from,len)   end end; var   s1,wd,wdmax:string;   ic,L,Lmax:integer; begin   Write('Введите строку: '); Readln(s1);   ic:=1; Lmax:=0;   repeat     GetWord(s1,ic,wd,L);     if (L>0) and (L>Lmax) then       begin Lmax:=L; wdmax:=wd end;     ic:=ic+L+1   until L=0;   Writeln('Самое длинное слово "',wdmax,'" длины ',Lmax) end.   Тестовое решение: Введите строку: Это пример    тестовой    строки  с произвольным числом   пробелов. Самое длинное слово "произвольным" длины 12
Не нашли ответ?
Ответить на вопрос
Похожие вопросы