结对项目— 词频统计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 ...
随机推荐
- 黄聪:js 获取浏览器、Body、滚动条、可见区域、页面、边框、窗口高度和宽度值(多浏览器)
IE中:document.body.clientWidth ==> BODY对象宽度document.body.clientHeight ==> BODY对象高度document.docu ...
- icape3 的使用
在FPGA中,有时需要使用用户代码重配置FPGA,配置的内容可以是flash或者是其他的来源这样FPGA的启动模式有关,在本实验中配置文件是存放在flash中.实际的操作步骤如下: 1:生成一个工程, ...
- kettle步骤概览--清洗校验
2017年03月22日 11:01:19 阅读数:4755 前边介绍了34个子程序 关于清洗和校验的子系统包含四个: 清洗.错误处理.审计维度.排重 Kettle里没有单一的数据清洗步骤,但有很多 ...
- http://bbs.csdn.net/topics/392028373
博客 学院http://bbs.csdn.net/topics/392028373 下载 GitChat 更多 登录注册 首页 精选版块 论坛牛人 论坛地图 专家问答 我要发贴 论坛帮助 ...
- selenium+python自动化83-pip安装selenium报Read time out HTTPSConnectionPool(host='pypi.python.org' port443)
遇到问题 1.有些小伙伴在用pip安装selenium时候报 Read time out HTTPSConnectionPool(host='pypi.python.org' port443) 2.估 ...
- urllib2 Handler处理器和自定义opener(六)
Handler处理器 和 自定义Opener opener是 urllib2.OpenerDirector 的实例,我们之前一直都在使用的urlopen,它是一个特殊的opener(也就是模块帮我们构 ...
- 关于json_encode转义斜杠的问题
加上参数 JSON_UNESCAPED_SLASHES即可 echo json_encode($data,JSON_UNESCAPED_SLASHES);
- 「小程序JAVA实战」小程序视频上传方法的抽象复用(57)
转自:https://idig8.com/2018/09/23/xiaochengxujavashizhanxiaochengxushipinshangchuanfangfadechouxiangfu ...
- Node爬虫之——使用async.mapLimit控制请求并发
一般我们在写爬虫的时候,很多网站会因为你并发请求数太多当做是在恶意请求,封掉你的IP,为了防止这种情况的发生,我们一般会在代码里控制并发请求数,Node里面一般借助async模块来实现. 1. asy ...
- c++动态链接库及静态链接库的生成与使用
1,新建控制台工程xdltest,改属性-配置属性-常规-配置类型为 动态库.dll或静态库.lib2,打开工程后添加 dltest.h, dltest.cpp,其中.h与.cpp名字没必要一样3,编 ...