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

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

Форум «Всё о Паскале» _ Задачи _ задачка на строки надо изменить

Автор: -Анютка- 27.03.2007 14:52

Во введенном предложении, словом текста является последовательность больших букв криллицы.
Найти и вывести все слова, в которых есть гласные буквы, причем любая гласная встречаеться ровно один раз.
Пример: МУЗЫКА.


Тут короче я решила, правдо коряво, но решила smile.gif Мне нужна ваша помочь... wink.gif У меня разделителем является пробел, а препод сказал чтоб разделителем были еще и маленькие буквы. mad.gif Я чето не могу понять как сделать. blink.gif Помогите пожалуйста!




Прикрепленные файлы
Прикрепленный файл  STROK_14.PAS ( 1.46 килобайт ) Кол-во скачиваний: 231

Автор: volvo 27.03.2007 15:24

PROGRAM stroki;
USES
crt;
CONST
big_letters = ['А' .. 'Я']; { множество ЗАГЛАВНЫХ русских букв неразрывно }
glas = ['А', 'Е', 'Ё', 'И', 'Й', 'У', 'О', 'Ы', 'Э', 'Ю', 'Я'];

VAR
sub_set: set of char;
error: boolean;

st, stnew:string;
i,j,p:integer;
BEGIN
clrscr;
writeln('Программа удаляет из строки слова, в которых повторяется гласная.');
writeln('Введите строку:');
readln(st);

i := length(st);
while i > 0 begin

while (i > 0) and (not (st[i] in big_letters)) do dec(i);
p := i;
while (i > 0) and (st[i] in big_letters) do dec(i);

stnew := copy(st, i + 1, p - i);
writeln('checking: ', stnew);
error := false;
sub_set := [];
for j := 1 to length(stnew) do
if (stnew[j] in glas) then begin
error := (stnew[j] in sub_set);
if not error then include(sub_set, stnew[j]);
end;
if error then delete(st, i + 1, p - i);
dec(i);
end;
writeln(st);

readln;
END.
(с кириллицей не тестировал, проверял алгоритм на латинском алфавите)

Автор: -Анютка- 27.03.2007 16:53

Пасиб большое!!!!!!
Только она оставляет в строке нужные слова и разделатели, маленькие буквы... А не подскажешь как и их убрать?