结对项目— 词频统计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)中的频率。
源程序如下:
- #include <iostream>
- #include <cstring>
- #include <fstream>
- using namespace std;
- struct WORD { /* 创建一个结构体 */
- int count;
- char s;
- void exchange( Word &word ) /* 交换单词 */
- {
- string tStr = word.Str;
- int tCount = word.Count;
- word.Str = Str;
- word.Count = Count;
- Str = tStr;
- Count = tCount;
- }
- };
- } w[];
- bool isword( char a[] ) /* 判断是否是一个单词 */
- {
- int i = ;
- for ( i = ; a[i] != '\0'; i++ )
- if ( (a[i] >= 'a' && a[i] <= 'z') || (a[i] >= '' && a[i] <= '') )
- return(true);
- else
- return(false);
- }
- int judge( char b[], int n ) /* 判断该单词是否出现过 */
- {
- if ( n > )
- for ( int i = ; i < n; i++ )
- {
- if ( !strcmp( b, &w[i].s ) ) /* 出现 */
- {
- w[i].count++;
- return(-);
- }
- }
- }
- void SortWordDown( Word * words, int size ) /* 降序排序 */
- {
- for ( int i = ; i < size; i++ )
- {
- for ( int j = ; j < size - ; j++ )
- {
- if ( words[j].Count < words[j + ].Count )
- {
- words[j].exchange( words[j + ] );
- }
- }
- }
- }
- int main( void )
- {
- char result[];
- char *ptr;
- ifstream file( "c://A_Tale_of_Two_Cities.txt" ); /* 读取 */
- if ( !file )
- {
- cout << "不能打开文件";
- }
- while ( !file.eof() )
- {
- file.getline( result, );
- }
- file.close();
- int j = ; /* 大写转小写 */
- while ( result[j] != '/0' && result[j + ] != '/0' )
- {
- if ( result[j] >= 'A' && result[j] <= 'Z' )
- {
- result[j] = result[j] - 'A' + 'a';
- j++;
- }
- }
- cout << result;
- char *sep = " ";
- int i = ;
- ptr = strtok( result, " " ); /* 利用strtok函数来分割result字符串中的单词 */
- while ( ptr != NULL )
- {
- if ( isword( p ) != false )
- {
- if ( judge( p, n ) != false )
- {
- w[n].s = *p; /* 赋值给数组 */
- n++;
- }
- }
- ptr = strtok( NULL, " " );
- }
- int t = ;
- char x;
- cout<<"请输入需要统计的单词:";
- cin>>x; /*输入需要统计的单词*/
- while (! strcmp(w[t].s,x)) /*查询比较所需统计的单词*/
- {
- t++;
- }
- cout<< w[t].s << ":" << w[t].count << '\n'; /* 输出统计结果 */
- return();
- }
结果:(读取小文件,选择单词evil,before,going)
总结:由于前一个作业合作的基础,仔细看了必做二的内容,在我和搭档讨论了之后,决定在主函数中添加一个查找单词的代码。查找除了单次之后,由于之前已经统计过了函数出现的次数,所以可以显示出次数。在讨论过程中,我们基本没有什么分歧。
结对项目— 词频统计2(语言C++)的更多相关文章
- 结对项目— 词频统计(语言C++)
结对对象:季天梦 博客地址:http://www.cnblogs.com/jitianmeng/ github链接:https://github.com/liuyutianlyt/EX_4.md 比例 ...
- task4:结对项目-词频统计
结对人:周楠 思路:利用TreeMap实现key字典序,然后输出到LinkedList,然后用Comparator,实现字典值从大到小排序,但是key实现值相同的key字典序的想出的实现方法,但是一直 ...
- 个人项目-词频统计(语言:C++)
词频统计 (个人项目) 要求 (1). 实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率. 附加要求:读入一段文本文件,统计该文本文件中单词的频率. (2) ...
- 作业3-个人项目<词频统计>
上了一天的课,现在终于可以静下来更新我的博客了. 越来越发现,写博客是一种享受.来看看这次小林老师的“作战任务”. 词频统计 单词: 包含有4个或4个以上的字 ...
- 软件工程第一次个人项目——词频统计by11061153柴泽华
一.预计工程设计时间 明确要求: 15min: 查阅资料: 1h: 学习C++基础知识与特性: 4-5h: 主函数编写及输入输出部分: 0.5h: 文件的遍历: 1h: 编写两种模式的词频统计函数: ...
- 个人项目----词频统计WEB(部分功能)
需求分析 1.使用web上传txt文件,对上传的txt进行词频统计. 2.将统计后的结果输出到web页面,力求界面优美. 3.在界面上展示所给url的文章词频统计,力求界面优美. 3.将每个单词同四. ...
- task4: 结对编程-词频统计[修改版]
问题描述: 读取一个文件,统计其中单词出现次数,并按从高到低的顺序显示,相同顺序的字典序排列. 思路: 基于上次的程序用正则提取出文本里的单词,然后利用字典计数(先get,为null则置1,不为nul ...
- 软工结对项目之词频统计update
队友 胡展瑞 031602215 作业页面 GitHub 具体分工 111500206 赵畅:负责WordCount的升级,添加新的命令行参数支持(自定义输入输出文件,权重词频统计,词组统计等所有新功 ...
- 结对&词频统计
结对编程 Pathner 濮成林(博客:http://www.cnblogs.com/charliePU/) 1.词频统计 环境依赖: 开发环境.myeclipse 2013, jdk1.7.0_04 ...
随机推荐
- 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’ ...
- tensorflow-windows下安装,python3.6
安装: pip install tensorflow ps:我第一次安装了,但是导入却失败了. 进入\python3\Lib\site-packages\删除了tensorflow,再次pip ins ...
- oracle创建新数据库
oracle创建新数据库 look here http://www.cnblogs.com/phoenixzq/p/3510854.html windows start menu>Oracle& ...
- login oracle as sysdba
- android处理Back键Home键和Menu键事件(转)
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BAC ...
- Memcpy, blockcopy的进一步理解
using System; using System.Runtime.InteropServices; using System.IO; namespace tx { struct ST { publ ...
- jquery.validate ajax方式验证
在做网站的时候有一块需要用到jquery.validate插件 ajax方式的方式来验证原始密码是否正确,研究了研究加上博客园朋友的帮助,终于实现了.贴出代码 <script type=&quo ...
- 使用cnpm代替npm
淘宝 NPM 镜像 这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步. 当前 registry.npm.taobao.or ...
- C#【Thread】Interlocked 轻量级锁
什么说它是轻量级呢?因为它仅对整形数据(即int类型,long也行)进行同步. 具体使用如下表: Interlocked.Increment(ref value) 数值加一(原子性操作) Interl ...
- UITextFeild银行卡/身份证/电话号任意分割.
日常开发中可能有个需求, 1.银行卡每4位添加一个空格 2.电话号:3 4 4 比如(138 8888 8888)3.身份证(411111 20171213 1314) 看了网上许多方法都是输入的时 ...