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