Подсчитать количество гласных и согласных букв в строке без учета регистра - C (СИ)
Формулировка задачи:
Решение задачи: «Подсчитать количество гласных и согласных букв в строке без учета регистра»
- #include <stdlib.h>
- #include <stdio.h>
- #include <locale.h>
- #include <Windows.h>
- #define LENGTH_S 32
- #define CONSONANTS_LENGTH 22
- #define VOWELS_LENGTH 11
- unsigned char LetterIs(wchar_t *arrayLetters, int length, wchar_t letter);
- int main()
- {
- /*Согласные буквы.*/
- wchar_t consonants[CONSONANTS_LENGTH] = L"бвгджзйклмнпрстфхцчшщ";
- /*Гласные буквы.*/
- wchar_t vowels[VOWELS_LENGTH] = L"ауоыиэяюёе";
- /*Строка введённая пользователем с клавиатуры.*/
- wchar_t S[LENGTH_S];
- /*Число гласных букв.*/
- int numberVowels = 0;
- /*Число согласных букв.*/
- int numberConsonants = 0;
- setlocale(LC_ALL, "Russian");
- printf("Введите строку: ");
- SetConsoleCP(1251);
- fgetws(S, LENGTH_S, stdin);
- SetConsoleCP(866);
- for (int i = 0; i < LENGTH_S; i++)
- {
- if (LetterIs(consonants, CONSONANTS_LENGTH, S[i]))
- {
- numberConsonants++;
- }
- else if (LetterIs(vowels, VOWELS_LENGTH, S[i]))
- {
- numberVowels++;
- }
- }
- printf("Число согласных букв составляет %d, а число гласных букв составляет %d.\n", numberConsonants, numberVowels);
- system("pause");
- }
- unsigned char LetterIs(wchar_t *arrayLetters, int length, wchar_t letter)
- {
- if (letter == '\0') return 0;
- for (int i = 0; i < length; i++)
- {
- if (iswupper(letter))
- {
- letter = towlower(letter);
- }
- if (arrayLetters[i] == letter)
- {
- return 1;
- }
- }
- return 0;
- }
Объяснение кода листинга программы
[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
, чтобы привести его к верхнему регистру. Это делается для того, чтобы функция проверяла символ независимо от регистра.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д