中易网

采用C或C++编程,对出现的单词次数进行统计,并按照出现次数从低到高排序

答案:3  悬赏:0  
解决时间 2021-02-19 16:37
采用C或C++编程,对出现的单词次数进行统计,并按照出现次数从低到高排序
最佳答案
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "ctype.h"
#include "string.h"
struct abc{
int n;
char w[21];
};
void main(void){
struct abc wn[500],t;
int i,j,k,x;
FILE *fp;
if((fp=fopen("intxt.txt","r"))==NULL){
printf("Failed to open the input file...\n");
exit(0);
}
memset((char *)wn,'\0',sizeof(wn));
i=j=0;
while((wn[i].w[j]=getc(fp))!=EOF){
if(isalpha(wn[i].w[j])) j++;
else{
wn[i].w[j]='\0';
for(k=0;k if(!strcmp(wn[i].w,wn[k].w)){
wn[k].n++;
break;
}
if(k>=i && j) wn[i++].n++;
j=0;
}
}
fclose(fp);
for(j=0;j for(x=j,k=j+1;k if(wn[x].n>wn[k].n) x=k;
if(x!=j){
t=wn[j];
wn[j]=wn[x];
wn[x]=t;
}
}
if((fp=fopen("outtxt.txt","w"))==NULL){
printf("Failed to open the output file...\n");
exit(0);
}
for(i=0;i fprintf(fp,"%s\t%d\n",wn[i].w,wn[i].n);
printf("%s\t%d\n",wn[i].w,wn[i].n);
}
fclose(fp);
}追问能不能给一些详细的注释啊,还有解题思路,谢谢啦追答说说思路吧。创建了一个结构体,其中有两个元素,一个是单词数组w,另一个是这个单词出现的次数n。在main中声明了一个结构体数级wn,有500个元素,所以本代码只适合不同单词不超过500的情况。从文件中一个字符一个字符地读,存放到结构体数组中的单词数组w中,当读到空格时,把这个空格变成'\0',表示单词结束了;这时再用这个单词与从0下标开始的结构体数组中的单词数组中的单词一次比较,若相等,则对该结构元素中的n增1,而不对结构体数组下标增1,说明单词重复了,下一个单词会覆盖刚刚读到的这个单词;若没有发现相同的单词,就对结构体数组下标增1,同时给这个元素中的n置1,说明是个新单词。再向后读,凡不是字母的都丢弃而不处理,直到遇到一个字母时作为新单词的开始而进行下一轮处理过程。直到遇到文件结束符时结束读取,关闭文件。然后对结构体数组按照n的大小排序,最后输出。
全部回答
路过!帮顶!
#include
#include
int main(int, char*[])
{
std::map words;
std::ifstream in("输入文件");
while (in && !in.eof())
{
std::string word;
in >> word;
++words[word];
}
std::multimap counts;
for (std::map::const_iterator i = words.begin(); i != words.end(); ++i)
counts.insert(std::make_pair(i->second, i->first));
std::ofstream out("输出文件");
for (std::multimap::const_iterator i = counts.begin(); i != counts.end(); ++i)
out << i->second << " " << i->first<< '\n';
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大学物理 一个恒力在一段位移做功怎么求解
4G的电脑内存够了吗?
大哥、大姐,『淄博』的山东省水利技术学院是
城东镇西场社区卫生服务站地址有知道的么?有
我是体育生。没参加单招。小高考六门考完,我
黄鹤楼湘菜馆(阜南店)地址在哪,我要去那里办
四大工程塑料是哪几种
宝利肤去痘印的哪里有卖的
饭局狼人杀被封号了怎么办
锦兴快餐店在哪里啊,我有事要去这个地方
sfc洛克人x3 据说x能让zero把怎么搞
我老婆老色了老勾引我,我就被勾引了,肾都须了
控制人口增长的最终目的是
到了一定年龄必须扔掉四样东西,没意义的酒局
用诚字开头的微信昵称
推荐资讯
山东晨阳经贸有限公司地址有知道的么?有点事
计算财务报表层重要性水平
两江镇劳动保障事务所怎么去啊,有知道地址的
金雕广告我想知道这个在什么地方
三苏酒楼在什么地方啊,我要过去处理事情
伊思蜗牛洗面奶怎么样
168音乐烤吧在什么地方啊,我要过去处理事情
You may lead a horse to the water, but you
广利超市地址在什么地方,想过去办事
青泥洼桥附近有什么好一点的大商场?急!!!
在欧洲携带蜜蜡红珊瑚过海关可以吗
苹果手机蓝屏重启咋回事8.1系统
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?