Подсчитать количество гласных и согласных букв в строке без учета регистра - C (СИ)

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

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

помогите написать программу на СИ. Пользователь вводит с клавиатуры строку S. Подсчитать количество гласных и согласных букв в строке без учета регистра.

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

textual
Листинг программы
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <locale.h>
  4. #include <Windows.h>
  5.  
  6. #define LENGTH_S 32
  7. #define CONSONANTS_LENGTH 22
  8. #define VOWELS_LENGTH 11
  9.  
  10. unsigned char LetterIs(wchar_t *arrayLetters, int length, wchar_t letter);
  11.  
  12. int main()
  13. {
  14.     /*Согласные буквы.*/
  15.     wchar_t consonants[CONSONANTS_LENGTH] = L"бвгджзйклмнпрстфхцчшщ";
  16.     /*Гласные буквы.*/
  17.     wchar_t vowels[VOWELS_LENGTH] = L"ауоыиэяюёе";
  18.     /*Строка введённая пользователем с клавиатуры.*/
  19.     wchar_t S[LENGTH_S];
  20.     /*Число гласных букв.*/
  21.     int numberVowels = 0;
  22.     /*Число согласных букв.*/
  23.     int numberConsonants = 0;
  24.  
  25.     setlocale(LC_ALL, "Russian");
  26.  
  27.     printf("Введите строку: ");
  28.     SetConsoleCP(1251);
  29.     fgetws(S, LENGTH_S, stdin);
  30.     SetConsoleCP(866);
  31.  
  32.     for (int i = 0; i < LENGTH_S; i++)
  33.     {
  34.         if (LetterIs(consonants, CONSONANTS_LENGTH, S[i]))
  35.         {
  36.             numberConsonants++;
  37.         }
  38.         else if (LetterIs(vowels, VOWELS_LENGTH, S[i]))
  39.         {
  40.             numberVowels++;
  41.         }
  42.     }
  43.  
  44.     printf("Число согласных букв составляет %d, а число гласных букв составляет %d.\n", numberConsonants, numberVowels);
  45.     system("pause");
  46. }
  47.  
  48. unsigned char LetterIs(wchar_t *arrayLetters, int length, wchar_t letter)
  49. {
  50.     if (letter == '\0') return 0;
  51.    
  52.     for (int i = 0; i < length; i++)
  53.     {
  54.         if (iswupper(letter))
  55.         {
  56.             letter = towlower(letter);
  57.         }
  58.  
  59.         if (arrayLetters[i] == letter)
  60.         {
  61.             return 1;
  62.         }
  63.     }
  64.  
  65.     return 0;
  66. }

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

[1] В этом коде написана функция, которая подсчитывает количество гласных и согласных букв в строке, введенной пользователем. [2] Согласные буквы хранятся в массиве consonants, а гласные - в массиве vowels. Длина массива consonants равна 22, а длина массива vowels равна 11. [3] В функции main создаются и инициализируются указанные массивы, а также переменные numberVowels и numberConsonants, которые будут использоваться для подсчета количества гласных и согласных букв соответственно. [4] После установки локали на Russian пользователю предлагается ввести строку. [5] Затем происходит цикл по всем символам введенной строки. Если символ является согласной буквой, то увеличивается счетчик numberConsonants. Если символ является гласной буквой, то увеличивается счетчик numberVowels. [6] В конце программы выводится количество согласных и гласных букв. [7] Функция LetterIs используется для проверки, является ли символ согласной или гласной буквой. Она принимает массив букв, их длину и символ, который нужно проверить. Если символ является гласной буквой, то функция возвращает 1. Если символ является согласной буквой, то функция возвращает 0. [8] В функции LetterIs используется функция iswupper, чтобы привести символ к нижнему регистру, а затем функция towlower, чтобы привести его к верхнему регистру. Это делается для того, чтобы функция проверяла символ независимо от регистра.

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


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

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

14   голосов , оценка 3.714 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы