const n=50;var f:Text; s:string; ss:array of string; a:array[1..n] of string; i,j:integer;begin Assign(f,'input.txt'); Reset(f); j:=0; while not Eof(f) do begin Readln(f,s); ss:=s.Split(' '); for i:=0 to Length(ss)-1 do if Length(ss[i])>1 then if RightStr(ss[i],2)='of' then begin Inc(j); a[j]:=ss[i] end; end; Close(f); for i:=1 to j do Write(a[i],' '); Writelnend.
Тестовое решение:123of asdfdsof dasof
Есть решение и покороче, но совсем не уровня начинающих:uses System.Text.RegularExpressions;const n=50;var f:Text; s:string; a:array[1..n] of string; i,j:integer;begin Assign(f,'input.txt'); Reset(f); j:=0; while not Eof(f) do begin Readln(f,s); foreach var m:Match in Regex.Matches(s,'\b\S+of\b') do begin Inc(j); a[j]:=m.Value end; end; Close(f); for i:=1 to j do Write(a[i],' '); Writelnend.