Сравнение отдельных символов в строке. Поиск согласных в пользовательском вводе букв
Мне было поручено написать код для программы на С ++, который найдет согласные в пользовательском вводе. Итак, если я введу abc, программа скажет мне, что есть две согласные. Вопрос ниже. Я не ищу, чтобы кто-то написал код для меня, мне просто нужен кто-то, чтобы помочь мне понять, как сравнивать символы пользовательского ввода со строкой.
Напишите программу, которая определяет количество согласных во введенной строке длиной не более 50 символов. Выведите введенную строку и количество согласных в строке. Вы можете предположить следующее; Согласные: bcdfghjklmnpqrstvwxyz
2 ответа
Определите строку со всеми согласными:
string cons = "bcd" // etc
Если нужно, поместите фактическое жало в нижний регистр
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
Затем переберите ваши строковые символы и попробуйте найти этот символ в согласной строке.
int consonants = 0;
for (string::iterator i = str.begin(); i !< str.end(); ++i)
if (cons.find(*i) != string::npos)
++consonants;
Или, если вы уверены, что ваша строка будет содержать только символы из az, используйте гласные, как указано ниже:
string vow = "aei" // etc
//...
int consonants = 0;
for (string::iterator i = str.begin(); i !< str.end(); ++i)
if (vow.find(*i) == string::npos)
++consonants;
Возможно, это не самый эффективный метод, но поскольку вы имеете дело только со строками длиной менее 50 символов, это не имеет большого значения.
Вот псевдокод:
Create a string containing all of the consonants as you listed above.
Prompt user for input
Store the input in a string
Use a loop to iterate through each character of the input string
Use another loop to check each character against your string of consonants
If it matches a consonant, increment your counter
Output the input string and count
Если вы используете строки C++, вы будете использовать длину строки в условии остановки цикла. Если вы используете строки C, вы будете использовать нулевой байт в условии остановки цикла.