Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задание на множество типа Set

Автор: Фантомас 6.12.2005 12:29

Дана непустая последовательность слов из строчных русских букв; между соседними словами – запятая, за последним словом – точка. Напечатать в алфавитном порядке все гласные буквы, которые входят в два последних слова.

Как решать? blink.gif blink.gif blink.gif помогите unsure.gif

Автор: Ozzя 6.12.2005 12:31

http://forum.pascalnet.ru/index.php?showtopic=3767&hl=гласные+буквы

Автор: Фантомас 8.12.2005 6:10

А можно хоть примерно набросать мою задачу? unsure.gif
Пробовал делать по другим примерам - не выходит dry.gif

Автор: klem4 8.12.2005 8:27

посмотри тему по ссылке и тебе многое должно стать понятней, только не пугайся сразу там сначала посложней методы, потом пороще.
http://forum.pascalnet.ru/index.php?showtopic=6972

Автор: volvo 8.12.2005 10:07

Фантомас,
два последних слова - это после последной запятой, так?

const
glasn = ['a', 'e', 'i', 'o', 'u']; { можно поменять на русские }
var
s: string;
p, i: byte;
my_set: set of char;
begin
write('s = '); readln(s);

p := length(s);
while s[p] <> ',' do dec(p);
for i := p to length(s) do
if s[i] in glasn then include(my_set, s[i]);
for i := 0 to 255 do
if chr(i) in my_set then write(chr(i):3);
end.

Автор: Фантомас 9.12.2005 14:03

Спасибо Вольво,
только почему-то прога считает гласные только в последнем слове.
И как предусмотреть, что последовательность слов заканчивается точкой?

klem4
Спасибо за ссылку, уже читаю

Автор: volvo 9.12.2005 14:06

Фантомас, приведи пример строки, которую ты задаешь...

Если ты НЕ отклоняешься от того, что написано в задании, то все должно работать...

Автор: Фантомас 9.12.2005 14:57

Ну вот, ввожу (в начале поменял на русские буквы)
дом,улица,фонарь,аптека.


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: volvo 9.12.2005 15:12

Блин... Ну конечно !!! После ПРЕДпоследней запятой...

const
glasn = ['a', 'e', 'i', 'o', 'u']; { Кириллица }
var
s: string;
p, i: byte;
my_set: set of char;
begin
write('s = '); readln(s);
p := length(s);
for i := 1 to 2 do begin
while (p > 1) and (s[p] <> ',') do dec(p);
dec(p)
end;

for i := p + 1 to length(s) do
if s[i] in glasn then include(my_set, s[i]);
for i := 0 to 255 do
if chr(i) in my_set then write(chr(i):3);
end.