首页 > 代码库 > 作业之词频统计

作业之词频统计

 

 项目需求:

1编一程序,统计一篇英文文章中各单词出现的次数。

2输入:英文文章,为文本文件,扩展名.txt

3输出:按次数降序排列

设计如下。

 1 #pragma warning (disable:4996) 2 #include <iostream> 3 #include <map> 4 #include <vector> 5 #include <algorithm> 6  7 using namespace std; 8  9 class String10 {11 public:12                                            //初始化词频初始值为113     String(char *Word) :Frequency(1)14     {15                                                      //存放单词的数组16         Word_Point = new char[strlen(Word) + 1];17                                                                 //将word复制到Word_Point数组18         strcpy(Word_Point ,Word);19     }20     char *Word_Point;21                                                                 //声明词频变量22     int Frequency;23     24     bool operator<(String STR);25     ~String(){}26 };27                                                                //重载函数28                                                                //可实现词频的降序输出29 bool String::operator<(String STR){    return Frequency > STR.Frequency;}30 31 vector<String>  Sort_Word;32 33                                                                //匹配到相同的词汇,词频数加134 void If_Repet(char *WordP)35 {36     vector<String>::iterator iter;37     for (iter = Sort_Word.begin(); iter != Sort_Word.end() ;iter++)38         if (!strcmp(iter->Word_Point, WordP))39         {40             iter->Frequency++;41             return;42         }43     Sort_Word.push_back(String(WordP));44 }45                                                                //读取article.txt文档,进行单词的分词46 void Catch_Letter(void)47 {48                                                                //动态分配内存49     char *Wor_Po = (char *)malloc(4);50                                                                //读取article.txt文档51     FILE *Article = fopen("E://aa.txt", "r");52     char *Letter_Point;53                                                                //进行单词的分词54     while (!feof(Article))55     {56         fscanf(Article, "%s", Wor_Po);57         Letter_Point = Wor_Po;58         while (*Letter_Point++)59         {60             if (*Letter_Point == , || *Letter_Point == .)61                 *Letter_Point = 0;62         }63         If_Repet(Wor_Po);64     }65 }66 67 void main(void)68 {69                                                                   //调用Catch_Letter() 函数70     Catch_Letter();71                                                                    //sort函数,将起,终点范围内的区域进行排序,默认升序输出72     sort(Sort_Word.begin() ,Sort_Word.end());73                                                                   //完成输出动作74     for (vector<String>::iterator iter = Sort_Word.begin(); iter != Sort_Word.end(); iter++)75     {76         printf("Word : %-15s Frequency :%d\n", iter->Word_Point, iter->Frequency);77         78     }79     getchar();80 }

 

输入文件截图       看老师说要篇幅大的,于是加了一个英文散文?随便网上找的技术分享

输出结果截图

技术分享

作业之词频统计