4.10 实例:词频统计

实例:词频统计

----输入一系列英文单词(单词之间用空格隔开),用“xyz”表示输入结束

----统计各单词出现的次数(单词不区分大小写),对单词按字典顺序进行排序后输出单词和词频

 

运行结果:

 

问题分析:

 

【算法描述】 查找算法:

 

【算法描述】 选择排序算法

 

编程实现:

#include<iostream>

#include<cstring>

using namespace std;

struct WordList{   //字典结构体

       char word[20]; //存储单词本身

       int freq;      //单词出现次数

};

int main()

{

       WordList list[1000]; //结构体数组

       int N=0;  //记录实际(没有重复的)的单词数

       int i,j,k;

       char tmp[20]; //临时存放新输入的单词

       //------------输入单词--------------

       cout<<"请输入一系列英语单词,以xyz表示输入结束:"<<endl;

       cin>>tmp;

       while(strcmp(tmp,"xyz")!=0){

              for(i=0;i<N;i++){  //在当前词典中逐个查

                     if(strcmp(list[i].word,tmp)==0){

                            list[i].freq++;

                            break;

                     }

              }

              if(i>=N){ //没有在词典中查到,添加该词

                     strcpy(list[i].word,tmp);

                     list[i].freq=1;

                     N++;  //实际单词数加1

              }

              cin>>tmp;

       }  //结束时,N是词典中的单词数

      

       //------------对词典进行排序------------

       for(i=0;i<N;i++){ //控制N-1次选择

              k=i;  //先设i为当前最小元素的下标

        for(j=i+1;j<N;j++){ //与后面的单词进行比较

             if(strcmp(list[j].word,list[k].word)<0){

                    k=j;   //记下最小元素的下标

             }

        }

        if(k!=i){  //最小的下标不是i

             WordList tmp;

                     //交换下标是k和i的两个元素

                     tmp=list[i];

                     list[i]=list[k];

                     list[k]=tmp;

        }

       }

       //------------输出结果--------------

       cout<<"词频统计结果如下:"<<endl;

       for(i=0;i<N;i++){

              cout<<list[i].word<<"\t"<<list[i].freq<<endl;

       }

       return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值