我的节目有问题,元音和辅音的计算方法有问题
#include<iostream>
using namespace std;
int main(){
int num[10],even = 0,odd = 0;
char choice;
int vowelcount = 0;
int concount = 0;
string word;
cout<<"MENU:"<<endl<<"[N]umber"<<endl<<"[L]etter"<<endl<<"Choice : ";
cin>>choice;
switch(choice){
case 'n': case 'N':
cout << "Enter 10 integers: \n";
for(int i = 0; i < 10; i++) {
cin >> num[i];
if((num[i] % 2) == 0) {
even++;
}
}
odd = 10 - even;
cout << "Even: " << even << endl;
cout << "Odd: " << odd << endl;
system("pause");
cout<<"Do you want to repeat the program ? Y/N ";
break;
case 'l': case 'L':
cout<< "Enter 10 Letters : \n";
cin>> word;
for (int i=0; word [i] != '\0'; i++){
word[i] = tolower (word[i]);
for (int i=0; word [i] != '\0'; i++)
switch(choice){
case 'A' :
case 'E' :
case 'I' :
case 'O' :
case 'U' :
vowelcount++;
break;
default:
concount++;
}
}
cout<<" total vowels = " <<vowelcount << endl;
cout<<" total consonant = " <<concount << endl;
system("pause");
return 0;
}
}
答案 0 :(得分:1)
好的,这里有几个问题。首先,总是尝试提供更多信息,然后“出现问题”。我只是将你的例子复制到visual studio中,很快就能找出你的问题,但是有了更多的信息,我可能根本不需要这样做。此外,整个问题不需要大写。 :)
所以......你的switch语句正在一个名为choice的变量上完成。此变量是您用来选择菜单选项的变量。您需要在正在测试的角色上运行switch语句。此外,你有两个循环,你只需要一个。
现在,因为你正在选择运行程序并且你有两个循环,每次循环选择总是'l'或'L'是辅音,但它运行的次数相等于输入字符串的长度平方。因此,对于元音的数量,你的响应为0,因为它从未看到任何元音,并且输入字符串的长度是平方的,因为你有嵌套的循环并且它多次计数“L”。
答案 1 :(得分:0)
您可以使用switch
和string
方法,而不是使用std::string::find
语句:
std::string vowels = "AEIOUaeiou";
std::string consonants = "BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz";
if (vowels.find(letter) != std::string::npos)
{
++vowelcount;
}
else
{
if (consonants.find(letter) != std::string::npos)
{
++consonantcount;
}
}