首页 > 其他 > 详细

输入英文查找出十个出现频率最高的单词

时间:2014-03-02 01:15:59      阅读:648      评论:0      收藏:0      [点我收藏+]


 

---恢复内容开始---

项目开发

                输入英文查找出十个出现频率最高的单词

项目分析

            第一步:依据要在查找出的单词中找到十个出现最高的词,我定义数据类型是结构体;在结构体中定义了char 数组和int 类型,其中char 数组存放单词,int类型存放此单词在文章中出现的次数;在扫描文章后所有的单词和出现的次数都会统计到结构体中。

            第二步:在第一步的基础上,我开始利用选择排序法,对单词出现的次数进行排序

            第三步:在前二步的基础上,只要输出前十个高频单词就可以完成该程序的任务

项目时间

日期 22日上午9点半--11点半 24日晚上九点--10点半 27日下午二点--四点
工作

思考程序的算法,制定该使用什么数据结构

并编写函数,用于扫描文章的单词、并记录单词

出现的次数

 

调式代码,并解决出现一些问题,例如:

 纠正了同样一个单词,但因为大小写的原

因,区分为二个不同的单词

 

 

 最后的测试以及编写博客

 

 

 

 

项目定义的数据结构

            

bubuko.com,布布扣
typedef struct WordCount
             {
                                 char Word[20];                                 //单词
                   int  Count;                                        //单词出现的次数
        }T_WordCount;
bubuko.com,布布扣

项目测试的数据

An old woman had a cat. The cat was very old; she could not run quickly, and she could not bite, because she was so old. One day the old cat saw a mouse; she jumped and caught the mouse. But she could not bite it; so the mouse got out of her mouth and ran away, because the cat could not bite it

项目测试的结果

bubuko.com,布布扣

核心代码的分析

bubuko.com,布布扣
 1 while(*m!=!)
 2 {
 3     j=M;
 4     if(*m>=a&&*m<=z)
 5     {
 6                                   *p=*m;
 7                 m++;
 8                 p++;
 9                  t++;    //字符的个数
10     }
11     else
12     {
13                 *m=*m+32;
14                 *p=*m;
15                  m++;
16                  p++;
17                  t++;
18 
19     }
20     if(*m==32)
21     {
22                                    memset(c1,0,20);
23                 for(flog,i=0;flog<t;flog++,i++,k++)
24                  {
25         c1[i]=c[k];
26                  }
27                 for(i=0;i<=j;i++)
28                 {
29         if(strcmp(wordset[i].Word,c1)==0)
30         {
31                    wordset[i].Count++;
32                            break;
33         }
34                 }
35                if(i-1==j)
36                {
37         strcpy(wordset[a].Word,c1);
38         wordset[a].Count++;
39         M++;
40         a++;
41                }
42               m++;
43               k=t;
44     
45     }
46 }
bubuko.com,布布扣

通过定义字符指针读取一个一个字符,如果字符是小写字母,则继续下一个字符的读取;如果字符是大写字母,则转化为小写字母继续读取;如果是空格则代表已经完全读完一个单词了,这时要判断此单词在结构体中是否拥有,如果已经存在,则在结构体中的Count中加1;如果没有此单词,则在结构加入该单词且置数为1.
其在我们设置一个数a,用于记录结构体中已经加入的数字,方便用于下一步排序

bubuko.com,布布扣
 1 for(i=0;i<a-1;i++)        //选择法排序
 2 {
 3     k=i;
 4     for(j=i+1;j<a;j++)
 5     {
 6         if(wordset[j].Count>wordset[k].Count)
 7         {
 8             k=j;
 9         }
10         else
11         {
12             k=i;
13         }
14         if(k!=i)
15         {
16             temp=wordset[k];
17             wordset[k]=wordset[i];
18             wordset[i]=temp;
19         }
20 
21     }
22 }
bubuko.com,布布扣

通过选择排序法将已经统计的单词个数进行排序

bubuko.com,布布扣
1 printf("英文中出现的10个最多的英文单词是:\n");
2     for(i=0;i<10;i++)                         //输出单词
3     {
4         printf("%s",wordset[i].Word);
5         printf("\t%d\n",wordset[i].Count);
6     }
bubuko.com,布布扣

输出前十个出现最多的单词

项目总结和体会

   通过本项目深刻理解了个人软件开发的流程,明白了软件的初期的需求分析和程序思路对于软件后期开发的重要性。对于今后的学习要更加注重编程的思路和代码的完善度

 

       

---恢复内容结束---

输入英文查找出十个出现频率最高的单词,布布扣,bubuko.com

输入英文查找出十个出现频率最高的单词

原文:http://www.cnblogs.com/zhangbo2011/p/3571660.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!