编写一个程序来计算每个不同单词在其输入中出现的次数

时间:2010-09-28 08:57:41

标签: c++

这是加速C ++中的问题(3-3)。

我是C ++的新手。我已经考虑了很长时间了,但是,我无法弄明白。 有人会为我解决这个问题吗? 请详细解释,你知道我不擅长编程。告诉我你使用的变量的含义。

5 个答案:

答案 0 :(得分:6)

最好的数据结构类似于std::map<std::string,unsigned>,但在第7章之前不会遇到地图。

以下是基于第3章内容的一些提示:

  • 您可以将字符串放在矢量中,这样就可以std::vector<std::string>
  • 可以比较字符串,因此std::sort可以与std::vector<std::string>一起使用,您可以检查两个字符串是否与s1==s2相同,就像整数一样。
  • 您在第1章中看到,如果std::cin >> sstd::cins会将s中的字词读入std::string

答案 1 :(得分:1)

为了提供最佳的学习体验,我不会提供可用的代码。 这是一个练习。你必须自己动手去学习。

这是使用一种在访问不存在的密钥时创建其值类型的映射的完美方案。幸运的是,C ++在其标准库中有这样的映射:std::map<key_type,value_type>正是您所需要的。

所以这是拼图:

  • 您可以使用运算符>>
  • 逐字读取 从流中读取为字符串
  • 您可以 将您找到的内容 存储在单词(字符串)到出现的地图中(无符号数字类型)
  • 通过不存在的密钥访问地图中的条目 时,地图将为您在该密钥下有用地创建新的默认构造值;如果值恰好是数字,则default-construction将其设置为0(零)

玩得开心吧!

答案 2 :(得分:0)

这是我的提示。 std::map将成为你的朋友。

答案 3 :(得分:0)

嗯,您需要一种从输入流中获取单个单词的方法(可能类似于“输入流”方法应用于“标准输入流”)以及将这些字符串和计数存储在某种“集合”。

我天生的家庭作业冷嘲热讽和对生活的普遍冷漠使我无法在此刻添加更多细节: - )

我使用的任何变量的含义都是不言而喻的,因为我倾向于使用objectsRemaininghasBeenOpened之类的东西。

答案 4 :(得分:0)

这是一个你可以使用的算法,尝试编写一些东西并在这里给你结果。然后人们可以帮助你走得更远。

向下扫描收集每个字母的字符串,直到到达字边界(比如空格或。或等)。   取出该单词并将其与您已找到的单词进行比较,如果已找到,则将该单词添加到该单词的计数中。如果不是,则将该单词添加到计数为1的单词列表中。

继续按下