type
lat=set of 'a'..'z';
var txt:string;
{Ввод текста}
procedure read_txt (var txt : string);
var k:byte;
begin
readln(txt);
k:=pos('.',txt);
if k>0 then
delete(txt, k, length(txt)-k+1 );
end;
{пропуск пробелов}
procedure empty (var txt:string; var i:integer);
var ok:boolean;
begin
ok:=true;
while ok and (i<=length(txt)) do
if txt=' ' then
i:=i+1
else
ok:=false;
end;
{Взять следующее слово }
function NextWords(txt:string; var i:integer):string;
var word:string;
ok:boolean;
begin
empty(txt,i);
word:=''; ok:=false;
while not ok and (i<=length(txt)) do
if (txt<>' ') then
begin
word:=word+txt;
i:=i+1;
end
else
ok:=true;
nextwords:=word;
end;
{Проверка}
function find(word:string):boolean;
var i:integer;
mn:lat;
begin
i:=1; mn:=[]; find:=true;
while (i<=length(word)) and find(word) do
if word in mn then
find:=false
else
begin
mn:=mn+[word];
i:=i+1;
end;
end;
{процедура поиска и печати нужных слов}
procedure CheckWords(txt:string);
var i:integer; wrd:string;
begin
i:=1;
while(i<=length(txt)) do
begin
wrd:=NextWords(txt, i);
if (wrd<>'') and odd(i) and find(wrd) then
writeln(wrd)
else
i:=i+1;
end;
end;
begin
writeln('Введите текст:');
read_txt (txt);
writeln ('Искомые слова:');
CheckWords(txt);
readln;
end.
[Pascal] Помогите найти ошибки (выборка слов из текста)
Слово - последовательность латинских букв. Напечатайте слова текста, имеющие
нечетный номер, в которых нет ни одной повторяющейся буквы.
Вот решение (но не работает, алгоритм вроде правильный), помогите найти ошибки (по возможности исправьте)
Код:
вы проверяете нечетность odd(i) - а i счетчик букв а не слов