繁体   English   中英

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

[英]Write a program to count how many times each distinct word appears in its input

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

我是C ++的新手。 我已经考虑了很长时间,但是我无法弄清楚。 谁能为我解决这个问题? 请详细解释一下,您知道我不太擅长编程。 告诉我您使用的变量的含义。

最好的数据结构类似于std::map<std::string,unsigned> ,但是直到第7章您都不会遇到映射。

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

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

为了提供最佳的学习体验,我将不会提供可粘贴的代码。 那是练习。 您必须自己做才能尽可能多地学习。

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

所以这是拼图碎片:

  • 您可以使用运算符>>单词到单词将单词逐字读入字符串
  • 您可以在单词(字符串)到事件(无符号数字类型)的映射中存储找到的内容
  • 当您通过不存在的键访问地图中的条目时 ,地图将帮助您在该键下创建一个新的默认构造值; 如果值恰好是数字,则默认构造会将其设置为0 (零)

祝您玩得开心!

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

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

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

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

这是一个您可以使用的算法,尝试对某些内容进行编码并将结果放在此处。 人们可以帮助您进一步发展。

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

继续进行下去

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM