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

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

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

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

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

textual
Листинг программы
#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, чтобы привести его к верхнему регистру. Это делается для того, чтобы функция проверяла символ независимо от регистра.

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


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

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

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