zoukankan      html  css  js  c++  java
  • 单词统计_统计文章中每个单词出现的频率

    //预先存入工程文件的文章tex文档
    #include<stdio.h>
    #include<string.h>
    //using namespace std
    typedef struct//储存字符和权值
    {   char str[20];
        int mount;
    }tj;
    
    int main()
    {
        int i,j,k,n=0;  int allmount=0;
        tj TJ[3000];//********************只需修改该两行便能改变统计容量
        for(i=0;i<3000;i++)   //初始化 ,最大能记录3000种不同(单词)的权值信息
        {   
            for(j=0;j<20;j++)
                TJ[i].str[j]='';//存储字符的数组全部置空
            TJ[i].mount=0;//权值置为0
        }
        char strl[20]={''};//读取的字符串(单词)临时存储在该数组中
        char s[300000]={''}, *p;//存储从文本文档中读过来的信息(字符)//**************能读入的文本容量在此可修改
        FILE *fp;
        fp=fopen("文档.txt","r");  
        fgets(s,250000,fp);//从文本文档中读取250000个字符存储在s[60000]中(读不到换行后的文字信息)
        //char *p="the the the of of of he he ";
        i=0;    p=s;//用指针指向待统计的文本信息
        for(  ;*p!='';p++)//注意记事本里的空格字符' '和空字符''是有区别的(光标的能够放的最右位置就是右边有多少空格字符)
        {
            if(*p!=' '&&*p!=','&&*p!='.'&&*p!='?'&&*p!=';'&&*p!=':')   j=1;
            else   j=0;    
            if(j==1) 
            { strl[i]=*p;  i++; }//读取字符临时存储于strl[i]
            else
            {   if(strl[0]!=NULL)  //或strl[0]!=''
                {    for(j=0;j<n;j++)
                        if(!strcmp(TJ[j].str,strl)) //如果存在已有的单词与新读取的单词相同,权值+1 /*(TJ[j].str==strl)总是=0???*/ 
                        {   TJ[j].mount++;  
                            for(k=0;k<20;k++)   strl[k]='';//重新置strl[]为空串
                               break;  
                        }
                    if(j==n)  //原来读取的单词中没有于当前读取的单词相同的情况
                    {  strcpy(TJ[n].str,strl);                     
                       for(k=0;k<20;k++)  strl[k]='';
                       TJ[n].mount=1;  
                       n++; 
                    }
                    i=0;
                    allmount++;//遇到非字符串就加1
                }  
                //allmount++;//遇到非字符串就加1,放在此处时空格也被算入
            }    
        }
        printf("共统计%d个单词
    ", allmount);//输出统计的单词总数
        int jianyan=0;
        for(i=0;i<n;i++)//输出单词及其权值
        {   if(i%3==0)  printf("
    ");        
            printf("(%3d) %-15s",i,TJ[i].str);
            printf("%-5d",TJ[i].mount);    
            jianyan+=TJ[i].mount;
        }
        printf("
    (检验统计)共统计%d个单词
    ", jianyan);//*******************用于检验
        getchar();
        return 0;
    }
        

  • 相关阅读:
    基本MVVM 和 ICommand用法举例(转)
    WPF C# 命令的运行机制
    628. Maximum Product of Three Numbers
    605. Can Place Flowers
    581. Shortest Unsorted Continuous Subarray
    152. Maximum Product Subarray
    216. Combination Sum III
    448. Find All Numbers Disappeared in an Array
    268. Missing Number
    414. Third Maximum Number
  • 原文地址:https://www.cnblogs.com/IThaitian/p/3602590.html
Copyright © 2011-2022 走看看