Пусть дан текст (т.е. мы его вводим сами), заканчивающийся точкой. Текст состоит из слов, разделённых пробелами. Слово - последовательность латинских букв. Напечатайте слова текста, имеющие нечетный номер, в которых нет ни одной повторяющейся буквы.
Вот решение задачи, но в процедуре find есть ошибка (т.е она работает неправильно).
const n_max=1000; {макс длина текста}
eot='.';
type litters = set of 'a'..'z'; {тип множества лат букв}
var txt:array [1..n_max] of char; {текст}
n:integer;
{процедура ввода текста}
procedure read_text;
var i:integer;
begin
Writeln ('Введите текст: ');
i:=0;
repeat
repeat //два репида, эт чтоб вводить построчно
i:=i+1;
read(txt[i]);
until eoln or (i=n_max) or (txt[i]=eot);
readln;
until (i=n_max) or (txt[i]=eot);
if txt[i]=eot then n:=i-1
else n:=i;
end;
{процедура поиска нужных слов}
procedure find;
var j,i:integer; s:string; m:litters; f:boolean;
begin
i:=1; j:=1;
repeat
s:=''; m:=[]; f:=false;
repeat
f:=txt[j] in m;
m:=m+[txt[j]]; s:=s+txt[j];
j:=j+1;
until (txt[j]=' ') or f or (txt[j]='.');
if not f and odd(i) then write(s);
i:=i+1;
until txt[i]='.';
end;
begin {main}
read_text;
find;
readln;
end.
Из цикла не правильно выходит (он конеш работает, но только, когда во всех словах буквы не повторяются). Переделайте пожалуйста...