Как проверить, начинается ли слово на согласную букву латинского алфавита? C++

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

int n;
cout << "Введите кол-во слов = ";
cin >> n;

string* words = new string[n];

for (int i = 0; i < n; i++) 
{
    cout << "Введите " << i + 1 << " слово: ";
    cin >> words[i];
}

Как проверить, начинается ли слово с согласной буквы латинского алфавита?


Ответы (2 шт):

Автор решения: KoVadim

Допустим, что std::string s - это строка. Первая буква слова - это s[0]. Конечно, перед этим лучше проверить, а вообще в строке есть хотя бы один символ - if (!s.empty()) { /*строка не пустая*/ }

Теперь самое сложное - проверить, что буква согласная. тут все очень просто - нужно на каждую возможную букву проверить.

char c = s[0];
if (c == 'b' || c == 'c' || c == 'd'....) {
  // делаем что то полезное
}

ну и остальные согласные символы добавляете аналогично. Осталось соединить все это аккуратно и будет как нужно.

Но так как согласных больше, можно проверять на гласные и инвертировать условие

char c = s[0];
if (c != 'a' && c != 'i' && c != 'o'....) {
  // делаем что то полезное
}
→ Ссылка
Автор решения: Yakov

Примерно так.

#include <iostream>
#include <string>

bool isconsonant(char ch)
{
    static std::string consonants("bcdfghjklmnpqrstwvxzBCDFGHJKLMNPQRSTWVXZ");
    return consonants.find(ch) != std::string::npos;
}

int main()
{
    std::string words[3];
    system("chcp 1251");
    for (int i = 0; i < 3; i++)
    {
        std::cout << "Введите " << i + 1 << " слово: ";
        std::cin >> words[i];
        if (words[i].length() > 0 && isconsonant(words[i][0]))
        {
            std::cout << "Первая буква слова согласная" << std::endl;
        }
    }
}
→ Ссылка