您的位置:首页 > 编程语言 > C语言/C++

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

2016-03-22 20:30 246 查看

结对对象:季天梦

博客地址: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-ffilename.txt>Result.txt(PS:C++程序,Java程序输出方式类似)filename.txt为前面下载的文件名。

解释:

选项-f表示后面跟文件名

输出格式规定(参考作业3中的示例):

首先按照频率由高到低排序

频率一样的词,按照字典顺序排序

此外,读取一个较大的文本文件Gone_with_the_wind.txt实验对比程序执行效率,做如下改进,比较改进前后程序执行时间。PS:请看一位同学做的效能分析示例

源程序如下:


#include<iostream>
#include<cstring>
#include<fstream>
usingnamespacestd;

structWORD{/*创建一个结构体*/
intcount;
chars;
voidexchange(Word&word)/*交换单词*/
{
stringtStr=word.Str;
inttCount=word.Count;
word.Str=Str;
word.Count=Count;
Str=tStr;
Count=tCount;
}
};
}w[100];

boolisword(chara[])/*判断是否是一个单词*/
{
inti=0;
for(i=0;a[i]!='\0';i++)
if((a[i]>='a'&&a[i]<='z')||(a[i]>='0'&&a[i]<='9'))
return(true);
else
return(false);
}

intjudge(charb[],intn)/*判断该单词是否出现过*/
{
if(n>0)
for(inti=0;i<n;i++)
{
if(!strcmp(b,&w[i].s))/*出现*/
{
w[i].count++;
return(-1);
}
}
}

voidSortWordDown(Word*words,intsize)/*降序排序*/
{
for(inti=0;i<size;i++)
{
for(intj=0;j<size-1;j++)
{
if(words[j].Count<words[j+1].Count)
{
words[j].exchange(words[j+1]);
}
}
}
}

intmain(void)
{
charresult[500];

char*ptr;
ifstreamfile("c://A_Tale_of_Two_Cities.txt");/*读取*/
if(!file)
{
cout<<"不能打开文件";
}
while(!file.eof())
{
file.getline(result,500);
}
file.close();
intj=0;/*大写转小写*/
while(result[j]!='/0'&&result[j+1]!='/0')
{
if(result[j]>='A'&&result[j]<='Z')
{
result[j]=result[j]-'A'+'a';
j++;
}
}
cout<<result;
char*sep="";

inti=0;
ptr=strtok(result,"");/*利用strtok函数来分割result字符串中的单词*/
while(ptr!=NULL)
{
if(isword(p)!=false)
{
if(judge(p,n)!=false)
{
w
.s=*p;/*赋值给数组*/
n++;
}
}
ptr=strtok(NULL,"");
}
intt=0;
ofstreamoutfile;/*输出文件到result1*/
outfile.open("Result1.txt")
SortWordDown(w,count);
while(w[t].s)/*输出统计结果*/
{
if(strlen(w[t].s)>=4)
{
outfile<<w[t].s<<":"<<w[t].count<<'\n';
t++;
}
}
return(0);
}


结果如下:



总结:由于是团队协作,我们在之前作业三的基础上就有程序上的不同,看对方程序也是一个学习过程。最后整合了两个程序之后,又一起讨论完成了作业四的要求。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: