结对对象:季天梦

博客地址:http://www.cnblogs.com/jitianmeng/

github链接:https://github.com/liuyutianlyt/EX_4.md

比例:1:1 


 要求


[必做 2] 读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率。

  • 命令行格式: 提示符> Myapp.exe -f filename.txt -w word (PS:C++ 程序,Java 程序输出方式类似)
  • 解释:
    • 选项 -f 表示打开某一文件(filename.txt)
    • 选项 -w 表示统计其后单词(word)在打开的文件(filename.txt)中的频率。

源程序如下:

  1. #include <iostream>
  2. #include <cstring>
  3. #include <fstream>
  4. using namespace std;
  5.  
  6. struct WORD { /* 创建一个结构体 */
  7. int count;
  8. char s;
  9. void exchange( Word &word ) /* 交换单词 */
  10. {
  11. string tStr = word.Str;
  12. int tCount = word.Count;
  13. word.Str = Str;
  14. word.Count = Count;
  15. Str = tStr;
  16. Count = tCount;
  17. }
  18. };
  19. } w[];
  20.  
  21. bool isword( char a[] ) /* 判断是否是一个单词 */
  22. {
  23. int i = ;
  24. for ( i = ; a[i] != '\0'; i++ )
  25. if ( (a[i] >= 'a' && a[i] <= 'z') || (a[i] >= '' && a[i] <= '') )
  26. return(true);
  27. else
  28. return(false);
  29. }
  30.  
  31. int judge( char b[], int n ) /* 判断该单词是否出现过 */
  32. {
  33. if ( n > )
  34. for ( int i = ; i < n; i++ )
  35. {
  36. if ( !strcmp( b, &w[i].s ) ) /* 出现 */
  37. {
  38. w[i].count++;
  39. return(-);
  40. }
  41. }
  42. }
  43.  
  44. void SortWordDown( Word * words, int size ) /* 降序排序 */
  45. {
  46. for ( int i = ; i < size; i++ )
  47. {
  48. for ( int j = ; j < size - ; j++ )
  49. {
  50. if ( words[j].Count < words[j + ].Count )
  51. {
  52. words[j].exchange( words[j + ] );
  53. }
  54. }
  55. }
  56. }
  57.  
  58. int main( void )
  59. {
  60. char result[];
  61.  
  62. char *ptr;
  63. ifstream file( "c://A_Tale_of_Two_Cities.txt" ); /* 读取 */
  64. if ( !file )
  65. {
  66. cout << "不能打开文件";
  67. }
  68. while ( !file.eof() )
  69. {
  70. file.getline( result, );
  71. }
  72. file.close();
  73. int j = ; /* 大写转小写 */
  74. while ( result[j] != '/0' && result[j + ] != '/0' )
  75. {
  76. if ( result[j] >= 'A' && result[j] <= 'Z' )
  77. {
  78. result[j] = result[j] - 'A' + 'a';
  79. j++;
  80. }
  81. }
  82. cout << result;
  83. char *sep = " ";
  84.  
  85. int i = ;
  86. ptr = strtok( result, " " ); /* 利用strtok函数来分割result字符串中的单词 */
  87. while ( ptr != NULL )
  88. {
  89. if ( isword( p ) != false )
  90. {
  91. if ( judge( p, n ) != false )
  92. {
  93. w[n].s = *p; /* 赋值给数组 */
  94. n++;
  95. }
  96. }
  97. ptr = strtok( NULL, " " );
  98. }
  99. int t = ;
  100. char x;
  101. cout<<"请输入需要统计的单词:";
  102. cin>>x; /*输入需要统计的单词*/
  103. while (! strcmp(w[t].s,x)) /*查询比较所需统计的单词*/
  104. {
  105. t++;
  106. }
  107. cout<< w[t].s << ":" << w[t].count << '\n'; /* 输出统计结果 */
  108. return();
  109. }

结果:(读取小文件,选择单词evil,before,going)


总结:由于前一个作业合作的基础,仔细看了必做二的内容,在我和搭档讨论了之后,决定在主函数中添加一个查找单词的代码。查找除了单次之后,由于之前已经统计过了函数出现的次数,所以可以显示出次数。在讨论过程中,我们基本没有什么分歧。

结对项目— 词频统计2(语言C++)的更多相关文章

  1. 结对项目— 词频统计(语言C++)

    结对对象:季天梦 博客地址:http://www.cnblogs.com/jitianmeng/ github链接:https://github.com/liuyutianlyt/EX_4.md 比例 ...

  2. task4:结对项目-词频统计

    结对人:周楠 思路:利用TreeMap实现key字典序,然后输出到LinkedList,然后用Comparator,实现字典值从大到小排序,但是key实现值相同的key字典序的想出的实现方法,但是一直 ...

  3. 个人项目-词频统计(语言:C++)

    词频统计 (个人项目) 要求 (1). 实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率. 附加要求:读入一段文本文件,统计该文本文件中单词的频率. (2) ...

  4. 作业3-个人项目<词频统计>

    上了一天的课,现在终于可以静下来更新我的博客了.       越来越发现,写博客是一种享受.来看看这次小林老师的“作战任务”.                词频统计 单词: 包含有4个或4个以上的字 ...

  5. 软件工程第一次个人项目——词频统计by11061153柴泽华

    一.预计工程设计时间 明确要求: 15min: 查阅资料: 1h: 学习C++基础知识与特性: 4-5h: 主函数编写及输入输出部分: 0.5h: 文件的遍历: 1h: 编写两种模式的词频统计函数: ...

  6. 个人项目----词频统计WEB(部分功能)

    需求分析 1.使用web上传txt文件,对上传的txt进行词频统计. 2.将统计后的结果输出到web页面,力求界面优美. 3.在界面上展示所给url的文章词频统计,力求界面优美. 3.将每个单词同四. ...

  7. task4: 结对编程-词频统计[修改版]

    问题描述: 读取一个文件,统计其中单词出现次数,并按从高到低的顺序显示,相同顺序的字典序排列. 思路: 基于上次的程序用正则提取出文本里的单词,然后利用字典计数(先get,为null则置1,不为nul ...

  8. 软工结对项目之词频统计update

    队友 胡展瑞 031602215 作业页面 GitHub 具体分工 111500206 赵畅:负责WordCount的升级,添加新的命令行参数支持(自定义输入输出文件,权重词频统计,词组统计等所有新功 ...

  9. 结对&词频统计

    结对编程 Pathner 濮成林(博客:http://www.cnblogs.com/charliePU/) 1.词频统计 环境依赖: 开发环境.myeclipse 2013, jdk1.7.0_04 ...

随机推荐

  1. 8 ways to improve ASP.NET Web API performance

    ASP.NET Web API is a great piece of technology. Writing Web API is so easy that many developers don’ ...

  2. tensorflow-windows下安装,python3.6

    安装: pip install tensorflow ps:我第一次安装了,但是导入却失败了. 进入\python3\Lib\site-packages\删除了tensorflow,再次pip ins ...

  3. oracle创建新数据库

    oracle创建新数据库 look here http://www.cnblogs.com/phoenixzq/p/3510854.html windows start menu>Oracle& ...

  4. login oracle as sysdba

  5. android处理Back键Home键和Menu键事件(转)

    @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BAC ...

  6. Memcpy, blockcopy的进一步理解

    using System; using System.Runtime.InteropServices; using System.IO; namespace tx { struct ST { publ ...

  7. jquery.validate ajax方式验证

    在做网站的时候有一块需要用到jquery.validate插件 ajax方式的方式来验证原始密码是否正确,研究了研究加上博客园朋友的帮助,终于实现了.贴出代码 <script type=&quo ...

  8. 使用cnpm代替npm

    淘宝 NPM 镜像 这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步. 当前 registry.npm.taobao.or ...

  9. C#【Thread】Interlocked 轻量级锁

    什么说它是轻量级呢?因为它仅对整形数据(即int类型,long也行)进行同步. 具体使用如下表: Interlocked.Increment(ref value) 数值加一(原子性操作) Interl ...

  10. UITextFeild银行卡/身份证/电话号任意分割.

    日常开发中可能有个需求, 1.银行卡每4位添加一个空格  2.电话号:3 4 4 比如(138 8888 8888)3.身份证(411111 20171213 1314) 看了网上许多方法都是输入的时 ...