Как проверить, начинается ли слово на согласную букву латинского алфавита? 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;
}
}
}