词频统计(结对编程)
2016-03-22 22:25
197 查看
从上次作业就感受到了词频统计的难度,虽然在有了一定的想法,但是实际实现起来却是很难,上次作业写得太乱于是重写,而且这次是结对编程,两个人之间难免发生思想上的冲突,但彼此却能相互弥补。
结对对象:张琪琪(博客:http://www.cnblogs.com/zhangqiqi/)
双方贡献比例:1:1
结对照片:
[必做 1] 基于作业3的结果,读取一个较小的文本文件A_Tale_of_Two_Cities.txt,统计该文件中的单词的频率,并将统计结果输出到当前目录下的 Result1.txt 文件。 (第一阶段初稿完成该要求)
命令行格式: 提示符> Myapp.exe -f filename.txt > Result.txt (PS:C++ 程序,Java 程序输出方式类似) filename.txt 为前面下载的文件名。
解释:此外, 读取一个较大的文本文件Gone_with_the_wind.txt实验对比程序执行效率,做如下改进,比较改进前后程序执行时间
选项 -f 表示后面跟文件名
输出格式规定(参考作业3中的示例):
首先按照频率由高到低排序
频率一样的词, 按照字典顺序排序
改动的地方之一就是将结果保存到文件中,读取部分就由队友代劳了:
对频率进行排序:
还有基本的识别单词和大小写转化等:
其他部分就由队友代劳了
结果:
完整的代码请看:https://github.com/MocQiQi/homework
总结:对于这次的结对练习,两个人的交流显得格外重要,分工合作,两个人相互讨论,相互学习对方写程序的优点,这样一来不仅提高了效率,也节省了时间。虽然在结对的过程中,两个人也会因为意见不同而有些小的争吵,也正因为这样,两个人都有了不同的进步。希望以后能够多学习,多交流,感谢队友在这次编程中给我的帮助和支持。
结对对象:张琪琪(博客:http://www.cnblogs.com/zhangqiqi/)
双方贡献比例:1:1
结对照片:
[必做 1] 基于作业3的结果,读取一个较小的文本文件A_Tale_of_Two_Cities.txt,统计该文件中的单词的频率,并将统计结果输出到当前目录下的 Result1.txt 文件。 (第一阶段初稿完成该要求)
命令行格式: 提示符> Myapp.exe -f filename.txt > Result.txt (PS:C++ 程序,Java 程序输出方式类似) filename.txt 为前面下载的文件名。
解释:此外, 读取一个较大的文本文件Gone_with_the_wind.txt实验对比程序执行效率,做如下改进,比较改进前后程序执行时间
选项 -f 表示后面跟文件名
输出格式规定(参考作业3中的示例):
首先按照频率由高到低排序
频率一样的词, 按照字典顺序排序
改动的地方之一就是将结果保存到文件中,读取部分就由队友代劳了:
void PrintResult()//建立一个输出函数 { FILE* fp1=fopen("Result1.txt", "w");//建立一个新的文件,并把结果保存到文件中 if(NULL == pHead) { printf("No Word!!\n"); } else { WordNode *pCurr = pHead;
while(NULL != pCurr) { fprintf(fp1,"%s\t%d\n", pCurr->word, pCurr->times); printf("%s\t%d\n", pCurr->word, pCurr->times); pCurr = pCurr->pNext; } fclose(fp1);
对频率进行排序:
void SortWordDown(Word * words, int size) { for(int i=0;i<size;i++) { for(int j=0;j <size-1;j++) { if(words[j].Count<words[j+1].Count) { words[j].exchange(words[j+1]); } } } }
还有基本的识别单词和大小写转化等:
void array(char x[]) { int k = 0; while (x[k] != '\0') { if (x[k] >= 'A'&&x[k] <= 'Z') x[k] = x[k] + 32; k++; } } int identity(char a[]) { int m=(strlen(a)>=4)?1:0; int n=(a[0]>='a'&&a[0]<='z')?1:0; if(!m||!n) return 0; else while(a) { for(int i=1;;i++) { if(!(a[i]>='a'&&a[i]<='z')||!(a[i]>='0'&&a[i]<='9')) return 0; else return 1; } } }
其他部分就由队友代劳了
结果:
完整的代码请看:https://github.com/MocQiQi/homework
总结:对于这次的结对练习,两个人的交流显得格外重要,分工合作,两个人相互讨论,相互学习对方写程序的优点,这样一来不仅提高了效率,也节省了时间。虽然在结对的过程中,两个人也会因为意见不同而有些小的争吵,也正因为这样,两个人都有了不同的进步。希望以后能够多学习,多交流,感谢队友在这次编程中给我的帮助和支持。
相关文章推荐
- [Java GC]Java垃圾回收
- python 跳出两层for循环
- C++运算符优先级
- VBA禁止安全警告和屏幕更新
- 【poj 3278】Catch That Cow 题意&题解&代码(C++)
- c++中const小结
- c++算法之分解质因数
- 5-29 删除字符串中的子串 (20分)c语言
- python之base64模块
- Qt 图像类 QImage QPixmap QBitmap QPicture 之区别与用途
- JAVA基础 时间和日期
- (转)C#的 GC工作原理基础
- Python __call__
- 增强Eclipse/MyEclipse的代码自动提示功能
- 【poj 3414】Pots 题意&题解&代码(C++)
- 简明Python教程学习笔记_5_解决问题
- 复制文件 C代码实现
- 使Eclipse下支持编写HTML/JS/CSS/JSP页面的自动提示(转)
- Java对象的序列化和反序列化
- java基本语法