程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 10大高頻率單詞篩選,10頻率單詞篩選

10大高頻率單詞篩選,10頻率單詞篩選

編輯:C++入門知識

10大高頻率單詞篩選,10頻率單詞篩選


//#include<iostream.h>
#include<string.h>
#include<fstream.h>
struct Word                                 //定義結構數組儲存單詞
{
  char w[20];
  int num;
}Word[10000];

void main()                        //主函數
{
    
    ifstream infile("test1.txt",ios::in);
    char a,t[20];
    int n;
    int wordTypeNum=0,wordNum=0;
    int i;
    int j;
    int ijt;
    for(i=0;i<10000;i++)                 // 給結構數組頻率計數num賦初值0
        Word[i].num=0;
    strcpy(Word[0].w,"wow\0");              //為以後編程方便,將第一個結構成員w賦一個絕對不是單詞的詞
    
    
    
    if(!infile)                        //判斷文件是否打開成功打開       
        cerr<<"File open error"<<endl;
    else
    {
        
        while(infile.get(a))                        //依次讀取txt文件中每個字符
        {
            if(a==' '||a==','||a==','||a=='!'||a=='?'||a=='"'||a==':'||a==';')  //這些為單詞間隔符,不全
            {
                t[wordNum]='\0';                                   //單詞結束
                for(i=0;i<=wordTypeNum;i++)                     //和前面已儲存單詞進行比較
                {
                  if(strcmp(t,Word[i].w)==0)                       //找到相同的單詞,num累加1
                  {
                      
                      Word[i].num++;wordNum=0;
                  }
                  
                }
                if(strcmp(t,Word[i].w)!=0)                  //沒找到相同的單詞,在新的結構體內儲存新單詞
                  {
                    wordTypeNum++;  
                    strcpy(Word[wordTypeNum].w,t);
                    Word[wordTypeNum].num++;
                    wordNum=0;
                  }
                
                
            }
            else                                    //字符組成單詞
            {
              t[wordNum]=a;
              wordNum++;
            }
        }
        /*cout<<endl;
        for(i=1;i<=wordTypeNum;i++)
            cout<<Word[i].w<<" "<<Word[i].num<<endl;*/
        for(i=1;i<wordTypeNum;i++)                   //將結構數組根據num成員從大到小排列
        {
          for(j=1;j<wordTypeNum-i;j++)
          {
            if(Word[j].num<Word[j+1].num)
            {
              ijt=Word[j].num;
              Word[j].num=Word[j+1].num;
              Word[j+1].num=ijt;
            }
          }
        }
        cout<<"頻率最高的10個單詞如下:"<<endl;
        for(i=1;i<=10;i++)                              //輸出前10個
        {
          cout<<Word[i].w<<" "<<Word[i].num<<endl;
        }
        infile.close();
    }

}

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved