当前位置: 代码迷 >> C语言 >> DONE统计一篇文章中各单词出现的频率!
  详细解决方案

DONE统计一篇文章中各单词出现的频率!

热度:160   发布时间:2007-08-31 17:29:45.0

#include<stdio.h>
#include<string.h>
struct words{
char word[80];
int num;
} passage[10];


main()
{


char s[]="This is C programming text This is C text";
char a[10][80];
int i,j,k,t,r,u;
i=j=k=t=u=0;

for(i=0;i<10;i++){
passage[i].num=0;
}

i=0;
while(k<strlen(s)){
while(s[k]!=' '&&k<strlen(s)){
a[i][j]=s[k];
j++;
k++;
}

a[i][j]='\0';
i++;
k++;
j=0;
}

for(t=0;t<i;t++){
puts(a[t]);
}
//这以上程序是将char s[]存放在数组a[10][80]中,
//其中a[i]放入一个单词。具体见论坛:
//将char s[]存放在数组a[5][20]

while(strlen(passage[u++].word)>0){
for(t=0;t<i-1;t++){
for(r=t+1;r<i;r++){
if(strcmp(a[t],a[r])==0){
strcpy(passage[u].word,a[t]);
passage[u].num++;
}
}
}

}

for(r=0;r<u;r++){
printf("%s %d",passage[r].word,passage[r].num);
}
//这里是统计各个单词出现的个数。

}

程序有问题,但我看不出。请帮忙!谢谢~~


----------------解决方案--------------------------------------------------------
我知道这题那里的````我到现在都没做出来````因为当时想了好久都没想出来```跳过它了 `
今天又看到```
回寝室继续想``


----------------解决方案--------------------------------------------------------
回复:(死了都要C)我知道这题那里的````我到现在都没...

好!努力吧~~


----------------解决方案--------------------------------------------------------
哈哈,这很像我考四级时的那题上机题~~~~~~

这题做出来,你四级上机题就应该没问题了!!!
----------------解决方案--------------------------------------------------------
也可以挑战下huffman
----------------解决方案--------------------------------------------------------
huffman是什么呀,直接告诉我吧,不要让我上百度!~~~
----------------解决方案--------------------------------------------------------
huffman编码,压缩软件用的就是这个原理,根据二叉树的方式,找到相同字母的个数,然后将最多出现的数减少他的禁止,最少出现的数,加长他的进制,以达到他压缩,释放空间的作用
----------------解决方案--------------------------------------------------------
回复:(酒肉弥勒佛)huffman编码,压缩软件用的就是这...

哦.有一定认识......谢谢


----------------解决方案--------------------------------------------------------
不知道,雨燕这题排序用什么排序,内排序还是外排序
如果是文件很大,就要外排序
如果内存很小,也要外排序
而外排序比较难些
现在好多外排序也在寻求效率
不知雨燕对该的看法
请教中
----------------解决方案--------------------------------------------------------

我修改了一下,但仍有一点问题:
#include<stdio.h>
#include<string.h>
struct words{
char word[80];
int num;
} passage[10];


main()
{

char s[]="This is C programming text This is C text";
char a[10][80];
int i,j,k,t,r,u;
i=j=k=t=u=0;

for(i=0;i<10;i++){
passage[i].num=0;
}

i=0;
while(k<strlen(s)){
while(s[k]!=' '&&k<strlen(s)){
a[i][j]=s[k];
j++;
k++;
}

a[i][j]='\0';
i++;
k++;
j=0;
}

for(t=0;t<i;t++){
puts(a[t]);
}
printf("\n\n");
//这以上程序是将char s[]存放在数组a[10][80]中,
//其中a[i]放入一个单词。具体见论坛
//http://bbs.bc-cn.net/viewthread.php?tid=166409&star=at#

// do{
for(t=0;t<i-1;t++){
for(r=t+1;r<i;r++){
if(strcmp(a[t],a[r])==0){
strcpy(passage[u].word,a[t]);
passage[u++].num++;
}
}
}

// }while(strlen(passage[u].word)>0);

for(r=0;r<u;r++){
printf("%s %d\n",passage[r].word,passage[r].num+1);
}
//这里是统计各个单词出现的个数。

}

//程序有问题,但我看不出。请帮忙!谢谢~~


----------------解决方案--------------------------------------------------------
  相关解决方案