Помощь - Поиск - Пользователи - Календарь
Полная версия: Напечатать слова текста, удовлетворяющие условиям
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
*alt
Задача на множества.
Пусть дан текст, заканчивающийся точкой. Текст состоит из слов, разделённых пробелами. Слово - последовательность латинских букв. Напечатайте слова текста, имеющие нечетный номер, в которых нет ни одной повторяющейся буквы.


Алгоритм Решения (доделайте, если можно представьте исходник)

Код

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 нечёт и нет ни одной повторяющейся буквы (как написать функцию?), то заносим слово в множество.
Печатаем.

Помогите люди добрые. Если есть (или напишите) исходник, то выложите пожалуйста. yes2.gif
volvo
Во-первых, "дан текст"... Как он тебе задан? Файл? Строка?

Во-вторых,
Цитата
заносим слово в множество.
- каким, собственно, образом? Во множество ты можешь занести символ, но никак не слово...
*alt
Цитата(volvo @ 3.05.2007 13:29) *

Во-первых, "дан текст"... Как он тебе задан? Файл? Строка?


Текст мы вводим сами - ручками.

Тогда как? Если условие true, то печатаем слово, так?
Как напечтать то слово, которое нам нужно?
volvo
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.

Гость
Ручками, то бишь по процедуре read_txt (см. первое сообщение)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.