uses crt;
const rzd=[' ',',',';',':','!','?','.'];{разделители можно добавить, зависит от текста}
var s,s1:string;
k,i: integer;
c:char;
begin
clrscr;
writeln('Введите текст, окончание ввода точка:');
s:='';
repeat
c:=readkey;
write(c);
s:=s+c;
if c='.' then writeln;
until c='.';
for i:=length(s) downto 1 do
begin
if s[i] in rzd then s[i]:='.';{заменим разделители на точку}
while pos('..',s)>0 do {если подряд 2 точки}
delete(s,pos('..',s),1); {1 удаляем}
end;
writeln('Слова из 3 букв:');
k:=0;
while pos('.',s)>0 do {пока есть точки}
begin
s1:=copy(s,1,pos('.',s)-1);{копируем первое слово в массив}
if length(s1)=3 then
begin
write(s1,' ');{если 3 буквы-выводим}
k:=1;
end;
delete(s,1,pos('.',s));{удаляем его}
end;
if k=0 then write('Слов из 3 букв нет!');
readln
end.