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) endend;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