元音计数中的输出量不正确

时间:2015-12-05 17:40:26

标签: c++ counting

我正在尝试编写一个代码,读取一行中有多少个元音的输入行。使用c ++,第一个输入是行数。在本练习中,“y”被视为元音。

 #include <iostream>
#include <string.h>
using namespace std;
int main(){     
    int vowel=0;
    int a;
    cin >>a; 
    for (int b=0; b<a; b++){
    string x; 
 getline(cin,x);
 int i = x.length();
        if(x[i]=='a'||x[i]=='e'||x[i]=='i'||x[i]=='o'||x[i]=='u'|| x[i]=='y')
        vowel ++;
   cout<<vowel<<" "; }
}

我继续计算错误的元音数量。为什么会这样? 样本输入:

16
tiraf sliamnmkjvcms c cmj gyipdxsuxepqqsrc
dsxyukxpsgxftsrov g  hsgekuxbf mefr tpvnutzw rxky
fg esxptwwydkfnblkwhezcewvwv u rjavbzlivjc znv 
ge lewqu  x qyxy thygluvtdtjyupmbcegyvjzk  
 e  ztaggibb iq ygy pd vycvpquwdbde yy mct q
kdewjl  gjapfpg  qpwvvuokndgjadadjw ok  a ifdjsw htufxiv hbu
musoamuk kl  viipodev k lg z jhymb m dia nthkzl a
fvdtqtbett do lcsgmv  kbvo hbbd injtjrzfm n  ywmljjxwz sah
cplw y npe orbpgovcnhrigpu jiop qbfkhreewsyn
vourdqyu mrwy abwhxysj lnsjhxihtelmjbslu
dzmla jhsnbcc wocfag tlfho bmp wpyhpawesl o  zv
dvveqhkyji u azk    dgzvsoqaamjfhgjy afcesfxsfjzrp
uuyxtbntb f pqutku   zyyskprbgzfhecd wynekb 
fnshvmptsv clglwfvfkynwutmbftom qgnmxfhr uarh
n jadnpbrktavqojwstmg w liwmtfykynlkdbrus undee wzsd
qef owpgu mrsuuateshbhr mxdmrnghsqc nx rysjxtlxpqrix vfs

output: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Expected: 8 8 7 11 11 12 12 6 11 10 8 11 10 5 10 9

2 个答案:

答案 0 :(得分:5)

char不是std的成员,而是关键字。 std::getline接受std::string。因此,将x声明为std::string,并将std::cin作为第一个参数传递给std::getline

答案 1 :(得分:2)

http://en.cppreference.com/w/cpp/string/basic_string/getline

std::getline将输入流作为其第一个参数。您正在传递std::char(实际上没有意义,因为char是关键字)。