uses crt;
const rzd=[' ',',',';',':','!','?','.'];{разделители можно добавить, зависит от текста}
var s,s1:string;
m,n,k,i: integer;
begin
clrscr;
write('s = ');
readln(s);
repeat
writeln('Введите минимальную длину слова минус 1 m=');
readln(m);
until m in [0..253];
repeat
writeln('Введите максимальную длину слова плюс 1 n>m+1=');
readln(n);
until n in [m+2..255];
writeln('Слова длиной от ',m+1,' до ',n-1);
s:=s+','; {добавим запятую в конец}
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;
k:=0;
while pos(',',s)>0 do {пока есть запятые}
begin
s1:=copy(s,1,pos(',',s)-1);{копируем первое слово}
if (length(s1)>m)and(length(s1)<n)then{если длина в интервале}
begin
k:=1; {фиксируем}
write(s1,' ');{выводим}
end;
delete(s,1,pos(',',s));{удаляем его}
end;
if k=0 then write('Таких слов нет');
readln
end.