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;
    }
        

  • 相关阅读:
    Conversion to Dalvik format failed with error 1 解决方法
    android 简单的反编译
    android ant打包问题总结
    android Sdcard 不同系统映射
    android 好用的开源框架
    android ScrollView 与 ListView 冲突汇总
    android 关于ImageView无法显示过长图片
    android 微信分享api调用总结
    android 捕获线程出错 重启线程
    c++中的容器和string类
  • 原文地址:https://www.cnblogs.com/IThaitian/p/3602590.html
Copyright © 2011-2022 走看看