元音计数中的输出量不正确
Incorrect amount of output in vowel-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
char
不是 std
的成员,它是关键字。 std::getline
接受 std::string
。因此,将 x
声明为 std::string
,并将 std::cin
作为第一个参数传递给 std::getline
。
http://en.cppreference.com/w/cpp/string/basic_string/getline
std::getline
将输入流作为其第一个参数。您传递的是 std::char
(这实际上没有意义,因为 char
是关键字)。
我正在尝试编写一个代码来读取输入行中有多少个元音字母。使用 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
char
不是 std
的成员,它是关键字。 std::getline
接受 std::string
。因此,将 x
声明为 std::string
,并将 std::cin
作为第一个参数传递给 std::getline
。
http://en.cppreference.com/w/cpp/string/basic_string/getline
std::getline
将输入流作为其第一个参数。您传递的是 std::char
(这实际上没有意义,因为 char
是关键字)。