gpt4 book ai didi

c++ - String Text 单词长度

转载 作者:行者123 更新时间:2023-11-28 07:15:22 25 4
gpt4 key购买 nike

大家好。我必须制作这个程序,在其中输入文本并输出那里有多少个单词以及那里有多少个长度为 1 、 2 等等到最长单词的单词。我已经完成了计算单词数的程序,但对于第二部分我不知道。非常感谢任何可以提供帮助的人。


#include <iostream>

using namespace std;
int main()
{
int br(string);

string text;
cout<< "Enter a text: ";
getline(cin,text);

cout << "Number of words: " << br(text) << endl;
return 0;
}
int br(string text)
{
int dumi = 1;
for(int i = 0; i < text.length();i++){
if(text[i] == ' ' || text[i] == ',' || text[i] == ';' || text[i] == '.' )
dumi++;}
return dumi;
}

最佳答案

嗯,我认为你在这里采取了错误的方法:你应该计算每个长度的单词数,然后将它们相加得到单词总数。

对于单词长度 I,将声明一个数组,其中数组中的索引表示单词的长度,并在每次我找到该特定长度的单词时递增数组中的索引(对于“word1”a [4]++,因为没有长度为 0 的词)。

现在,根据wikipedia ,英语中最长的单词(假设我们正在谈论的是英语)是~190.000 个字母。你不需要考虑那么长的词(我认为),除非你想处理不太可能出现的最坏情况;所以这里 200 可能就足够了。

回到代码:

int words[200]; // don't foreget to initialize the elements to 0
int letterCount =0;
for(int i = 0; i < text.length();i++){
if(text[i] == ' ' || text[i] == ',' || text[i] == ';' || text[i] == '.' )
{
if(letterCount > 0)
words[letterCount]++;
letterCount =0;
}
else{
letterCount++;
}
}

您现在需要遍历数组并查看每个长度有多少个单词。

关于c++ - String Text 单词长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20324132/

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