gpt4 book ai didi

c++ - 包括 "Y"在内的元音个数

转载 作者:行者123 更新时间:2023-12-01 23:26:10 24 4
gpt4 key购买 nike

我必须编写一个函数来打印给定字符串行中的所有元音字母,包括 Y,除非 Y 后跟另一个元音字母。

例如:

"test phrase" returns 3
"yes no why not?" returns 4

我试过使用 getline(),但我不确定是否有一种方法可以在不需要用户输入某种类型的情况下使用它。我需要它来使用已声明的字符串。

这是我的代码,它在某种程度上有效,但需要输入。

#include <iostream>
#include <string>
using namespace std;

int numVowelsIncludingY(string line){
int v = 0;
getline(cin, line);

for(int i = 0; i < line.length(); ++i){
if(line[i] == 'A' || line[i] == 'E' || line[i] == 'I' || line[i] == 'O' || line[i] == 'U' || line[i] == 'Y' ||
line[i] == 'a' || line[i] == 'e' || line[i] == 'i' || line[i] == 'o' || line[i] == 'u' || line[i] == 'y'){
++v;
}
}
return v;
}

更新

我已经删除了 getline 并且读取字符串工作正常,但我仍然对如何仅在 Y 后面没有跟另一个元音的情况下将其计为元音感到困惑。

#include <iostream>
#include <string>
using namespace std;

int numVowelsIncludingY(string line){
int v = 0;

for(int i = 0; i < line.length(); ++i){
if(line[i] == 'A' || line[i] == 'E' || line[i] == 'I' || line[i] == 'O' || line[i] == 'U' || line[i] == 'Y' ||
line[i] == 'a' || line[i] == 'e' || line[i] == 'i' || line[i] == 'o' || line[i] == 'u' || line[i] == 'y'){
++v;
}
}
return v;
}

最佳答案

因为我没有正确理解您的问题,所以我删除了上一个答案。但现在这是应该按预期工作的代码。是的,您不应该使用 using namespace std,这被认为是一种不好的做法。看这里:Why is "using namespace std;" considered bad practice?

#include <algorithm>
#include <iostream>
#include <string>
#include <vector>

int numVowelsIncludingY(std::string line) {
int v = 0;

std::vector<char> vovels{'a', 'e', 'i', 'o', 'u', 'y'};
for (size_t i = 0; i < line.length(); ++i) {
char ch = tolower(line[i]);
if (ch == 'y' && find(vovels.begin(), vovels.end(), tolower(line[i + 1])) !=
vovels.end()) {
} else if (find(vovels.begin(), vovels.end(), ch) != vovels.end()) {
++v;
}
}
return v;
}
int main(void) {

std::cout << numVowelsIncludingY("yy");

return 0;
}

关于c++ - 包括 "Y"在内的元音个数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67217754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com