从输入文件中读取单词并计算唯一单词

时间:2016-04-15 05:36:22

标签: c++

嘿大家我在这项任务中遇到了一些麻烦。我需要:

读取输入文件的每个单词。对于每个单词:

  1. 如果单词库存中已存在该单词,则只需将1添加到计数中即可。不要在库存中添加重复的字词。
  2. 如果您的单词清单中不存在该单词,请添加该单词并将计数设置为1.
  3. 读完所有输入文件后,关闭输入文件。
  4. 按照ASCII字顺序对单词库存进行排序
  5. 显示单词库存,即列出单词及其计数。输出应按ASCII字顺序排序。
  6. 我允许的图书馆包括iostreamiomanipstringcstringcerrnolimits,{{1 },sstreamfstream

    到目前为止,我在计算单词时遇到了困难!我的代码计算字符,而不是单词。到目前为止,我的代码如下:

    cmath

2 个答案:

答案 0 :(得分:0)

你可能想从stl使用set 声明一组字符串类型

set <string> mySet;

bool myfunc(string word){
    pair<set<string>::iterator,bool>unique; 
/* use #include<utility>
    when a set insertion returns a pair of values, the second one is boolean type. and as set's element is always sorted and unique, it makes our life easy*/
unique = mySet.insert(word);

return unique.second;
}

答案 1 :(得分:0)

在伪代码中,您需要执行以下操作来获取计数:

  1. 创建一个计数器以跟踪广告资源中的字数,一开始必须为0(让我们称之为wordCount)。
  2. 从文件中读取一个单词。
  3. 浏览所有添加的单词,然后查看该单词是否在列表中
    • 从0到wordCount
  4. 将newWord与inventory[index]处的字词进行比较
    • 如果匹配,请在inventory[index]处增加计数并停止循环
    • 如果不匹配,请转到下一个。
  5. 如果在wordCount结束时未找到,请将inventory[wordCount]设为0计数并增加wordCount
    • 由于您有基于0的索引,因此当前计数中清单中的单词应为空,因此将其添加为新单词并增加计数。
  6. 重复,直到读完所有单词。
  7. 要对单词进行排序,请阅读排序算法,例如冒泡排序应该很容易实现:

    • 可以使用operator<if(str1 < str2) {}