Форум «Всё о Паскале» _ Задачи _ Напечатать слова текста, удовлетворяющие условиям
Автор: *alt 3.05.2007 16:41
Задача на множества. Пусть дан текст, заканчивающийся точкой. Текст состоит из слов, разделённых пробелами. Слово - последовательность латинских букв. Напечатайте слова текста, имеющие нечетный номер, в которых нет ни одной повторяющейся буквы.
Алгоритм Решения (доделайте, если можно представьте исходник)
Код
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[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;
Потом как поступать (если можно пример)? Я понимаю так: Идём по тексту, если пробел и i нечёт и нет ни одной повторяющейся буквы (как написать функцию?), то заносим слово в множество. Печатаем.
Помогите люди добрые. Если есть (или напишите) исходник, то выложите пожалуйста.
Автор: volvo 3.05.2007 17:29
Во-первых, "дан текст"... Как он тебе задан? Файл? Строка?
Во-вторых,
Цитата
заносим слово в множество.
- каким, собственно, образом? Во множество ты можешь занести символ, но никак не слово...
Автор: *alt 3.05.2007 18:19
Цитата(volvo @ 3.05.2007 13:29)
Во-первых, "дан текст"... Как он тебе задан? Файл? Строка?
Текст мы вводим сами - ручками.
Тогда как? Если условие true, то печатаем слово, так? Как напечтать то слово, которое нам нужно?
Автор: volvo 3.05.2007 19:21
var s: string; my_set: set of char; ok: boolean; i, start: integer;
begin s := 'begin end start finish 121213 1234567.'; { <--- Вводи ручками, для отладки - задано здесь } start := i; my_set := []; ok := true; for i := 1 to length(s) do begin if s[i] in [' ', '.'] then begin
if ok then writeln(copy(s, start, i - start)); my_set := []; ok := true; start := i + 1;
end else begin ok := ok and (not (s[i] in my_set)); include(my_set, s[i]); end;
end;
end.
Автор: Гость 5.05.2007 23:10
Ручками, то бишь по процедуре read_txt (см. первое сообщение)