结对项目 - 词频统计
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结对项目 - 词频统计相关的知识,希望对你有一定的参考价值。
目的与要求
- 代码复审练习
- 结对练习
- 编写单元测试
- 基于作业3的结果,读取一个较小的文本文件A_Tale_of_Two_Cities.txt,统计该文件中的单词的频率,并将统计结果输出到当前目录下的 Result1.txt 文件。 (第一阶段初稿完成该要求)
- 命令行格式: 提示符> Myapp.exe -f filename.txt > Result.txt (PS:C++ 程序,Java 程序输出方式类似) filename.txt 为前面下载的文件名。
- 解释:
- 选项 -f 表示后面跟文件名
- 输出格式规定(参考作业3中的示例):
- 首先按照频率由高到低排序
- 频率一样的词, 按照字典顺序排序
- 此外, 读取一个较大的文本文件Gone_with_the_wind.txt实验对比程序执行效率,做如下改进,比较改进前后程序执行时间。
详细内容
- 开发语言:C++
- 开发工具:Codeblocks
- 结对伙伴:陈俊宇http://www.cnblogs.com/junyujun/
- 准备工作:
- 思路:
基于上一个 个人项目 - 词频统计 的程序和结果,将本次所需的文件放在指定的地址上,统计该文件中的单词的频率,并使用文件流的写入将结果写入文件。
2. 分工:
我负责主要大框架的编写,我的小伙伴负责在这个框架里细化逻辑与语法语句的关系。
- 源代码
#include<iostream> #include<fstream> #include<cstring> #include<cctype> using namespace std; void screen(int chioce) //对内容进行筛选 { char input[50][50],newinput[50][50],newopen[100]; char *open; if(chioce==1) //以输入方式对字符串进行存储与筛选 { cout<<"请输入一串字符串,以回车键作为结束:"; for(int m=0;input[m]!=‘\\0‘;m++) //将字符串以二维字符数组的形式储存起来 { for(int n=0;input[n]!=‘\\0‘;n++) { cin>>input[m][n]; } } for(int m=0;input[m]!=‘\\0‘;m++)//将输入的字符串的大写转换为小写 { for(int n=0;input[m][n]!=‘\\0‘;n++) { if(input[m][n]>=‘A‘&&input[m][n]<=‘Z‘&&strlen(input)>=4) //限制字符串大小为4 { int i=0,j=0; newinput[i][j]=toupper(input); } } } sta(newinput,m*n); } else //以录入方式对字符串进行存储与筛选 { int i=0,n; ifstream open("D:\\\\A_Tale_of_Two_Cities.txt"); open=new int[n]; while(open>>open[i],strlen(open)>=4) //字符串大于4的才给予储存的机会 { newopen[i]=toupper(open); //大写转换成小写 i++; } sta(newopen,i); } } void sta(char word[],int wordnum[]) //统计单词出现的次数 { char newword[],newwordnum[]; cout<<"统计的单词出现的次数如下:\\n"; for(int i=0;;i++) { for(int j=0;if(strcmp(newword[i],word[j]));j++) { newwordnum[i]++; } cout<<newword[i]<<‘\\t‘<<newwordnum[i]<<endl; } } void SortWordDown(char word,int size ) //以单词出现频率降序排列单词 { for (int i=0;i<size;i++) { for(int j=0; j<size-1;j++) { if (words[j]<words[j+1]) { exchange(words[j],words[j+1]); } } } } int main( ) { int chioce; cout<<"请问是输入一串字符串还是导入一个文本文件?(1:字符串,2;文本文件):"; cin>>chioce; if(chioce==1||chioce==2) //用户选择 { screen(chioce); } ofstream outfile; //用文件流写入文件结果 outfile.open( "Result1.txt" ) return 0; }
- 运行结果
- 小结
第一次尝试与其他人一起结对编程,对于一个人的编程,两个人更明显的可以互相交流和弥补双方的缺点和弱势。
对于在原来程序上完善和原数据上的变动更得心应手了。
- 源代码Github地址
https://github.com/Jennyhyt/My-source-code/blob/master/TeamWork-WFS.cpp
以上是关于结对项目 - 词频统计的主要内容,如果未能解决你的问题,请参考以下文章