Найти и вывести слово нечетной длины, в котором согласных букв больше - Pascal

Узнай цену своей работы

Формулировка задачи:

Дан произвольный текст на русском языке. найти и вывести слово нечетной длины ,в котором согласных букв больше,чем гласных

Решение задачи: «Найти и вывести слово нечетной длины, в котором согласных букв больше»

textual
Листинг программы
const
  ar: set of char = ['А'..'Я', 'а'..'я'];                       //задаю множество букв русского алфавита
  //задаю множество гласных букв русского алфавита
  gr: set of char = ['А', 'Ё', 'У', 'Е', 'Ы', 'О', 'Э', 'Я', 'И', 'Ю', 'а', 'ё', 'у', 'е', 'ы', 'о', 'э', '?', 'и', 'ю'];
  p: set of char = [' ', '.', ',', ':', ';', '!', '?', '-'];//задаю множество разделителей слов
 
var
  sr: set of char;                                          //переменные для множеств согласных
  i, j, kg, ks: byte;                                             //счетчики и переменные для количества гласных и согласных в слове
  s, slovo: string;//переменная для строки и для слова
 
begin
  write('s=');                                                     //запрашиваю и считываю строку
  readln(s);
  s := s + ' ';
  slovo := '';                                             //добавляю  пробел в конце предложения
  sr := ar - gr;
  for i := 1 to length(s) do
    if not (s[i] in p) then slovo := slovo + s[i] else                //если символ - не знк препинания или пробел, добавляю его к "нововобразовываемому" слову. иначе перехожу к обработке
    if length(slovo) > 0 then                                    //если длина набранного слова больше 0
    begin
      kg := 0;ks := 0;                                           //изначально количество гласных и количество согласных рано 0
      for j := 1 to length(slovo) do                            //в цикле с параметром перебираю символы слова
      begin
        if slovo[j] in sr then 
          inc(ks);  //если символ входит в множество согласных, увеличиваю счетчик согласных букв
        if slovo[j] in gr then 
          inc(kg);  //если символ входит в множество гласных, увеличиваю счетчик гласных букв
      end;
      if (kg > ks) and (length(slovo) div 2 <> 0)  then 
        write(slovo, ' ');                         //если счетчик гласных больше согласных, вывожу слово
      slovo := '';                                              //очищаю переменную для следующего слова
    end;
end.

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

  1. Объявляется множество ar для русских букв алфавита.
  2. Объявляется множество gr для русских гласных букв.
  3. Объявляется множество p для разделителей слов.
  4. Объявляется переменная sr для множества согласных букв.
  5. Объявляются переменные и счетчики: i, j, kg, ks для работы с буквами в слове.
  6. Объявляются переменные строкового типа: s для ввода строки и slovo для текущего слова.
  7. Запрашивается и считывается строка.
  8. К строке добавляется пробел в конце предложения.
  9. Определяется множество sr как разность множества ar с множеством gr.
  10. В цикле for перебираются символы строки: если символ не является разделителем, он добавляется к временному слову slovo, иначе обрабатывается.
  11. Если длина слова больше нуля, инициализируются счетчики гласных и согласных букв.
  12. Во внутреннем цикле for перебираются буквы слова: если символ является согласной буквой, увеличивается счетчик согласных; если символ является гласной буквой, увеличивается счетчик гласных.
  13. Если количество гласных больше согласных и длина слова нечетная, выводится слово.
  14. Переменная для слова slovo очищается для обработки следующего слова. Код написан на языке программирования Pascal.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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