Программа должна принимать строку в качестве входных данных и подсчитывать количество гласных, а также то, какие именно гласные они есть. Почему-то кажется, что он может считать As, но не другие гласные.
int main()
{
std::string inp;
int counter = 0;
int a = 0, i = 0, e = 0, o = 0, u = 0;
std::cout << "Enter the string: ";
std::cin >> inp;
for (int i = 0; i < inp.length(); i++)
{
switch(inp[i])
{
case 'A':
case 'a':
counter++;
a++;
break;
case 'E':
case 'e':
counter++;
e++;
break;
case 'i':
case 'I':
counter++;
i++;
break;
case 'u':
case 'U':
counter++;
u++;
break;
case 'o':
case 'O':
counter++;
o++;
break;
}
}
std::cout << "There were " << counter << " vowels in total." << std::endl;
std::cout << "There were " << a << " As, " << i << " Is, " << o << " Os, " << u << " Us, and " << e << " Es." << std::endl;
return 0;
}
Какую кодировку вы используете в своем терминале?
Что касается отладки, я также рекомендую вам добавить корпус default к вашему оператору switch, так как это упростит отладку.
У вас есть 2 переменные счетчика i и цикл.
Наконец, что происходит в случае 'i' и 'I'? Сколько у вас переменных с именем i?
Попробуйте добавить -Wshadow в свою команду компиляции
Введите строку: Инструкция Всего было 3 гласных. Было 0 As, 0 Is, 0 Os, 1 Us и 0 Es.





Ваша переменная цикла i скрывает i во внешней области видимости. Это приводит к тому, что яя> не подсчитываются правильно и пропускаются символы (поскольку каждый раз, когда вы встречаете 'i', вы увеличиваете i переменной цикла).
Измените имя переменной цикла на другое.
Спасибо, это решило мою проблему, и теперь я понимаю ошибку.
Для некоторых конкретных входных данных, каковы ожидаемые и фактические выходные данные (пожалуйста, прочтите о как задавать хорошие вопросы, а также о этот контрольный список вопросов)? А вы свою программу отлаживать пробовали?