Напечатать гласные буквы, входящие в каждое слово, и согласные буквы, не входящие ни в одно слово - Pascal
Формулировка задачи:
Дана непустая последовательность слов из строчных русских букв; между соседними
словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все гласные буквы,
которые входят в каждое слово; все согласные буквы, которые не входят ни в одно слово.
Помогите с программой, пожалуйста.
Решение задачи: «Напечатать гласные буквы, входящие в каждое слово, и согласные буквы, не входящие ни в одно слово»
textual
Листинг программы
var s: string;
glasn, soglasn, w: set of char;
i: integer;
c: char;
begin
writeln('Введите последовательность русских слов через запятую с точкой в конце:');
readln(s);
glasn := ['а','е','ё','и','о','у','ы','э','ю','я'];
soglasn := ['б','в','г','д','ж','з','й','к','л','м','н','п','р','с','т','ф','х','ц','ч','ш','щ'];
w := [];
for i := 1 to length(s) do
if s[i] in ['.', ',']
then begin
glasn := glasn * w;
soglasn := soglasn - w;
w := []
end
else include(w, s[i]); //процедура include - это то же самое, что и w := w + [s[i]], но быстрее
writeln('Гласные буквы, входящие в каждое слово:');
if glasn = []
then writeln('Не найдены.')
else begin
for c := ' ' to high(char) do if c in glasn then write(c);
writeln
end;
writeln('Согласные буквы, которые не входят ни в одно слово:');
if soglasn = []
then writeln('Не найдены.')
else begin
for c := ' ' to high(char) do if c in soglasn then write(c);
writeln
end;
readln
end.
Объяснение кода листинга программы
- Объявляется переменная
sтипа string для хранения ввода пользователя - Создаются множества символов
glasnиsoglasnдля хранения гласных и согласных букв соответственно - Объявляется переменная
wдля временного хранения букв в каждом слове - Выводится приглашение на ввод последовательности русских слов
- Пользователь вводит последовательность слов через запятую, которая сохраняется в переменную
s - Инициализируются множества
glasnиsoglasnсоответствующими русскими гласными и согласными буквами - Выполняется цикл для обработки каждого символа в строке
s - Если текущий символ - точка или запятая, то обновляются множества
glasnиsoglasnпутем пересечения и разности с множествомw, и переменнаяwобнуляется - Печатаются гласные буквы, входящие в каждое слово, либо сообщение
Не найдены. - Печатаются согласные буквы, которые не входят ни в одно слово, либо сообщение
Не найдены. - Завершение программы.