gpt4 book ai didi

c++ - 计算一个单词中的音节数,但考虑到单词中任何相邻的元音都算作一个音节

转载 作者:行者123 更新时间:2023-11-28 04:31:56 26 4
gpt4 key购买 nike

我已经能够通过制作一个简单的嵌套 for 循环来计算单词中的音节数,但无法弄清楚如何重写这种算法以确保在单词计数中任何多个元音彼此相邻作为一个音节。我只遇到过另一个使用指针的示例,我的问题是是否还有其他方法,因为我这周才开始学习指针,但不确定如何正确使用它们。

到目前为止,这是我的程序:

#include <iostream>
#include <string>


using namespace std;

void indexfx(string sentence);

int main(void)
{
string user;
cout << "\n\nPlease Enter a Sentence: ";

getline(cin, user);

indexfx(user);




return 0;
}


void indexfx(string sentence)
{
string vowels = "aeiouy";
int syllables = 0;

for(unsigned int i = 0; i < sentence.size(); i++)
{
for(unsigned int j = 0; j < vowels.size(); j++)
{
if(sentence[i] == vowels[j]
{
syllables++;
}
}
}

cout << syllables;
}

最佳答案

这是一个状态机。

       Vowel  Consonant EndOfWord
C V C End
V V C* End*

其中 * 表示“增加音节数”。从状态 C 开始。

测试:

a*da*m
ma*da*m
he*llo*
chi*cke*n

我们可以直接实现这个状态机:

int count_syllables( std::string s ) {
int count = 0;
char state = 'c';
for (auto c : s ) {
switch(state) {
case 'c': {
break;
}
case 'v': {
if (!IsVowel(c)) ++count;
break;
}
}
state = IsVowel(c)?'v':'c';
}
if (state == 'v') ++count;
return count;
}

现在我们只需要编写IsVowel

bool IsVowel(char c) {
static const std::string vowels = "aeiouy";
return vowels.find(c) != std::string::npos;
}

关于c++ - 计算一个单词中的音节数,但考虑到单词中任何相邻的元音都算作一个音节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52638947/

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