词频统计(第二周)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了词频统计(第二周)相关的知识,希望对你有一定的参考价值。

新功能需求:

1.小文件输入. 在控制台下输入命令。

2.支持命令行输入英文作品的文件名。

 

部分核心代码:

结构体定义:

定义一个结构体来存放读取的单词与其统计的次数。

typedef struct addup
{
    char word[50];
    int count;
}R;

读取文本:

       char temp[50];        R fin[10000]={"\0",0};        char file[10];
       fflush(stdin);
       gets(file);
       fp=freopen(file,"r",stdin);

单词匹配:

针对读取的每个单词,和结构体中之前存取的单词进行对比,如果相同则累计数量,如果不同则更新数组。

技术分享
while(!feof(fp))
       {
           fscanf(fp,"%s",temp);
           q=strlen(temp);
           n++;
    for(i=0;i<n;++i)
        if(strcmp(fin[i].word,temp)==0)
        {
             fin[i].count++;
              n--;
              break;
         }
         if(i>=n)
         {
             strcpy(fin[n-1].word,temp);
             fin[n-1].count++;
         }
       }
技术分享

标点判定:

将读取的字符串以字符为单位判断标点并去除。

for(i=0;i<q;i++)
{
     if(temp[i]==,‘||temp[i]==.‘||temp[i]==?‘||temp[i]==!‘||temp[i]==")
     temp[i]=\0;
}

冒泡排序:

技术分享
for (i=0;i<n;i++)  
        for (j=0;j<n-i;j++)  
          {  
            if (fin[j].count<fin[j+1].count)  
               {  
               ls[0]=fin[j+1];  
               fin[j+1]=fin[j];  
               fin[j]=ls[0];  
               }  
          }  
技术分享

输出结果:

技术分享
       if(m!=1)
        printf("total  %d words\n\n",m);
      else printf("total  1 word\n\n");

     for(i=0;i<n;i++) { printf("%s : ",fin[i].word); s=0; for(j=0;j<fin[i].count;++j) s++; printf("%d 次",s); printf("\n"); }
技术分享

运行结果:

功能1:技术分享

功能2:技术分享

 

 PSP表格

C C S E I T
分析 需求,设计 15:20 15:30 0 10
编码 实现 15:30 16:20 0 50
文档 程序说明,随笔 23:40 0:05 0 25
讨论 程序改进 -- -- --

--

 

 

 

 

 

 

 

 

 

psp2.1  
Planning 12%
Development 59%
Reporting 29%

以上是关于词频统计(第二周)的主要内容,如果未能解决你的问题,请参考以下文章

软件工程第二周作业----词频统计

(第二周)新英文词频统计

第二周进度条

第二周作业

第二周 词频统计

第二周作业-词频统计