gpt4 book ai didi

c++ - 计算每个不同的词在输入中出现的次数

转载 作者:搜寻专家 更新时间:2023-10-31 01:21:24 25 4
gpt4 key购买 nike

我正在做一个来自 Accelerated C++ 的练习:

Write a program to count how many times each distinct word appears in its input.

这是我的代码:

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

int main()
{
// Ask for
// and read the input words
std::cout << "Please input your words: " << std::endl;
std::vector<std::string> word_input;
std::string word;
int count = 0;
while (std::cin >> word)
{
word_input.push_back(word);
++count;
}

// Compare the input words
// and output the times of every word compared only with all the words

/***** I think this loop is causing the problem ******/
for (int i = 0; i != count; ++i)
{
int time = 0;
for (int j = 0; j != count; ++j)
{
if (word_input[i] == word_input[j])
++time;
else
break;
}

std::cout << "The time of "
<< word_input[i]
<< " is: "
<< time
<< std::endl;
}

return 0;
}

如果你编译并运行这个程序,你会看到:

Please input your words:

然后我输入如下:

good good is goodEOF

然后显示:

The time of good is: 2The time of good is: 2The time of is is: 0The time of good is: 2

我的预期结果是:

The time of good is: 3The time of is is: 1

我不想使用 map ,因为我还没有学会。

是什么导致了这种意外行为,我该如何解决?

最佳答案

假设 std::vector 是您此时熟悉的唯一容器,并且您还没有接触过 std::pair,我建议如下:

  • 你添加一个std::vector<int> word_count
  • 在你的std::cin while 循环,检查当前单词是否出现在 word_input 中.如果不是,你push_back这个词和push_back word_count 中的 1 .如果在某个索引处已经有当前单词的条目 iword_input ,你递增 word_count在这个索引i .因此,您输入的每个不同的词只在 word_input 中出现 一次 , 输入次数在 word_count 中管理.
  • 对于输出,遍历word_inputword_count并行输出每个词的词数。

完成。

但是所有这些都通过 std::map 变得更加简单和优雅.继续阅读! :-)

关于c++ - 计算每个不同的词在输入中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3820908/

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