Подсчитать количество гласных и согласных букв в строке без учета регистра - 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
, чтобы привести его к верхнему регистру. Это делается для того, чтобы функция проверяла символ независимо от регистра.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д