Напечатать гласные буквы, входящие в каждое слово, и согласные буквы, не входящие ни в одно слово - 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.

Объяснение кода листинга программы

  1. Объявляется переменная s типа string для хранения ввода пользователя
  2. Создаются множества символов glasn и soglasn для хранения гласных и согласных букв соответственно
  3. Объявляется переменная w для временного хранения букв в каждом слове
  4. Выводится приглашение на ввод последовательности русских слов
  5. Пользователь вводит последовательность слов через запятую, которая сохраняется в переменную s
  6. Инициализируются множества glasn и soglasn соответствующими русскими гласными и согласными буквами
  7. Выполняется цикл для обработки каждого символа в строке s
  8. Если текущий символ - точка или запятая, то обновляются множества glasn и soglasn путем пересечения и разности с множеством w, и переменная w обнуляется
  9. Печатаются гласные буквы, входящие в каждое слово, либо сообщение Не найдены.
  10. Печатаются согласные буквы, которые не входят ни в одно слово, либо сообщение Не найдены.
  11. Завершение программы.

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы