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

Мне было поручено написать код для программы на С ++, который найдет согласные в пользовательском вводе. Итак, если я введу 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, вы будете использовать нулевой байт в условии остановки цикла.

Другие вопросы по тегам