20180918-1 词频统计
Posted sunsaijia
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20180918-1 词频统计相关的知识,希望对你有一定的参考价值。
作业要求参见[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2126]
作业代码地址[https://coding.net/u/shishishaonian/p/word_count/git]
功能一:
需要正确区分单词,在控制台实现命令行输入,打开目标文件,对单词进行词频排序。用fopen函数去找目标路径的txt文件。区分单词我的想法是:单词只能由字母、"‘"、"-"以及数字组成
while(ch!=EOF){ //这儿我是认为单词只有字母、"‘"、"-"以及数字组成,并且数字不能放在开头 //判断是不是组成单词的元素 if(isalpha(ch)!=0||(ch==‘‘‘&&len>0)||ch==‘-‘||(ch>=‘0‘&&ch<=‘9‘&&len>0)){ //将大写字母转换为小写字母 if(ch>=‘A‘&&ch<=‘Z‘){ ch=ch-‘A‘+‘a‘; } //将符合条件的元素加入当前单词尾部 str+=ch; //单词长度+1; len++; //遇到空格之类字符,判断当前单词长度len是否大于零,若大于零,说明当前存有单词 }else if(len>0){ //如果当前单词出现次数为零 if(mp[str]==0){ //把新单词存入s中 s.push_back(str); //单词出现次数加一 mp[str]++; //词汇量加一 totalword++; //如果不是新单词,只需单词出现次数加一 }else{ mp[str]++; } //记录完单词后把str,len清空,进行下一轮的存储 str=""; len=0; } }
执行后效果如下图所示:
功能二和功能三和功能四:
关键在于要能区分输入的第二个参数是文件夹名还是文件名还是重定向。先判断argv[1]是不是"-s",是的话就是重定向。将重定向到"-s"里的文件输入到功能一里的函数即可进行输出。如果不是"-s",再利用判断文件夹路径是否存在来判断是文件名还是文件夹名 。如果是文件名就在末尾加上”.txt“,利用功能一的函数就能实现,如果是文件夹名就进入文件夹,遍历搜索所有txt文件。
这部分的
以上是关于20180918-1 词频统计的主要内容,如果未能解决你的问题,请参考以下文章