Консультация № 197334
07.12.2019, 13:13
0.00 руб.
0 3 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:

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

Pascal

Приложение:
Pascal

Обсуждение

давно
Старший Модератор
31795
6196
13.12.2019, 14:31
общий
это ответ
Здравствуйте, rail!

[code lang=pascal]const
{на все случаи жизни}
type_a:string='аоиеёэыуюя';{гласные}
type_b:string='бвгджзйлмнр';{согласные звонкие}
type_c:string='кпстфхцчшщ';{согласные глухие}
type_d:string='ьъ';{отдельные буквы}
type_e:string='!@#$%^&*()_-+={}[]:">? ';{возможные разделители}
var
a,b:string;
c,d:set of char;
e:char;
begin
{формирование контрольного множества}
b:=type_a;
c:=[];
while length(b)>0 do
begin
c:=c+[b[1]];
delete(b,1,1);
end;
{ввод строки - так для проформы}
repeat
write('enter string:=');
readln(a);
until length(a)>0;
{контрольная строка с возможными ошибками юзера}
a:='абитура, абитуриент - абитуриетка = абитуриентский';
writeln('before >',a,'<');
{защита от юзера - использование различных разделителей слов}
b:=type_e;
while length(b)>0 do
begin
while pos(b[1],a)>0 do a[pos(b[1],a)]:=',';
delete(b,1,1);
end;
{защита от юзера - удаляем повторы разделителей}
while pos(',,',a)>0 do delete(a,pos(',,',a),1);
{защита от юзера - забыл поставить точку в конце строки}
if a[length(a)]<>','then a:=a+',';
writeln('after >',a,'<');
{главный цикл}
while length(a)>0 do
begin
{выделение очередного слова}
b:=copy(a,1,pos(',',a)-1);
{формирвание текущего множества подконтрольных букв}
d:=[];
while length(b)>0 do
begin
if pos(b[1],type_a)>0 then d:=d+[b[1]];
delete(b,1,1);
end;
c:=c*d;
{удаление провереного слова}
delete(a,1,pos(',',a));
end;
{вывод результата}
write('result:=');for e:='а' to 'я' do if (e in c) then write(e:2);writeln;
writeln('press enter');
readln;
end.[/code]

Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
403300
9
18.12.2019, 11:19
общий
Адресаты:
здравствуйте, программа работает неправильно и непонятна суть части программы с абитуриентом... можете пожалуйста пересмотреть код
давно
Старший Модератор
31795
6196
19.12.2019, 15:22
общий
Адресаты:
Задание
Цитата: rail
Напечатать в алфавитном порядке все гласные буквы, которые входят в каждое слово


Цитата: rail
программа работает неправильно

Добавил строку контроля, работы с каждым словом.

Что именно работает не правильно?
В каждом слове есть только три гласные А И У.
Я Вам писал в коде:
{ввод строки - так для проформы}
. . .
{контрольная строка с возможными ошибками юзера}

Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа