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

结对对象:季天梦

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

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



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

时间: 2024-10-13 10:00:17

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

结对项目 - 词频统计Ⅱ

目的与要求 代码复审练习 结对练习 编写单元测试 基于上一个结对项目的结果,读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率. 命令行格式: 提示符> Myapp.exe -f filename.txt -w word (PS:C++ 程序,Java 程序输出方式类似) 解释: 选项 -f 表示打开某一文件 选项 -w 表示统计其后单词在打开的文件中的频率 详细内容 开发语言:J

结对项目 - 词频统计

目的与要求 代码复审练习 结对练习 编写单元测试 基于作业3的结果,读取一个较小的文本文件A_Tale_of_Two_Cities.txt,统计该文件中的单词的频率,并将统计结果输出到当前目录下的 Result1.txt 文件. (第一阶段初稿完成该要求) 命令行格式: 提示符> Myapp.exe -f filename.txt > Result.txt (PS:C++ 程序,Java 程序输出方式类似) filename.txt 为前面下载的文件名. 解释: 选项 -f 表示后面跟文件名

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

结对对象:季天梦 博客地址:http://www.cnblogs.com/jitianmeng/ github链接:https://github.com/liuyutianlyt/EX_4.md 比例:1:1  要求 [必做 1] 基于作业3的结果,读取一个较小的文本文件A_Tale_of_Two_Cities.txt,统计该文件中的单词的频率,并将统计结果输出到当前目录下的 Result1.txt 文件. (第一阶段初稿完成该要求) 命令行格式: 提示符> Myapp.exe -f filen

作业4:结对项目—— 词频统计

1. 要求 基于作业3的结果,读取一个较小的文本文件A_Tale_of_Two_Cities.txt,统计该文件中的单词的频率,并将统计结果输出到当前目录下的 Result1.txt 文件. (第一阶段初 稿完成该要求). 命令行格式: 提示符> Myapp.exe -f filename.txt > Result.txt (PS:C++ 程序,Java 程序输出方式类似) filename.txt 为前面下载的文件名. 解释: 1.选项 -f 表示后面跟文件名 2.输出格式规定(参考作业3中

作业4:结对项目——词频统计

1. 目标 代码复审练习 结对练习 编写单元测试 2. 要求 [必做 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)在打

task4:结对项目-词频统计

结对人:周楠 思路:利用TreeMap实现key字典序,然后输出到LinkedList,然后用Comparator,实现字典值从大到小排序,但是key实现值相同的key字典序的想出的实现方法,但是一直错是返回null,不知所以. 程序: 1 class sort2{ 2 LinkedList<Map.Entry<String, Integer>> yy; 3 LinkedList<Map.Entry<String, Integer>> temppp; 4 5

《结对-英文词频统计-结对项目总结》

结对项目心得: 完成之后感觉实际耗时应该比原计划少一些,查找相关方法.不过感觉python还是相对比较容易上手的,有这么多可以直接调用的方法.这一部分大概用时三个半小时. 其他部分的工作用时与预计没有太大差距. 最省时间的是程序没有出现太大问题,所以大大减少了时间. 最主要的是两人合作.

个人项目——词频统计

前言: 开发工具:Visual Studio 2013 开发语言:C++ 源代码管理工具:Github Github源代码网址:https://github.com/superyy/YY1/blob/master/%E8%AF%8D%E9%A2%91%E7%BB%9F%E8%AE%A1main.cpp 预计各功能所花时间:some hours 实际各功能所花时间:some hours 性能提高所花时间:some hours 要求 :实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4

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

需求分析 1.使用web上传txt文件,对上传的txt进行词频统计. 2.将统计后的结果输出到web页面,力求界面优美. 3.在界面上展示所给url的文章词频统计,力求界面优美. 3.将每个单词同四.六级词库进行比对,统计所传txt文件中四.六级单词涵盖率. 4.在3的基础上,展示文章中前10%单词中的覆盖百分比,词频前50%单词.词频前80%单词的覆盖百分比. 由于能力有限,学习了很久,到目前为止之完成了第一个功能,并对结果进行了输出,界面部分还有待学习. 代码实现 创建了两个JSP界面,up