• 词频统计(结对编程)


    从上次作业就感受到了词频统计的难度,虽然在有了一定的想法,但是实际实现起来却是很难,上次作业写得太乱于是重写,而且这次是结对编程,两个人之间难免发生思想上的冲突,但彼此却能相互弥补。

    结对对象:张琪琪(博客:http://www.cnblogs.com/zhangqiqi/)

    双方贡献比例:1:1

    结对照片:

    • [必做 1] 基于作业3的结果,读取一个较小的文本文件A_Tale_of_Two_Cities.txt,统计该文件中的单词的频率,并将统计结果输出到当前目录下的 Result1.txt 文件。 (第一阶段初稿完成该要求)
    • 命令行格式: 提示符> Myapp.exe -f filename.txt > Result.txt (PS:C++ 程序,Java 程序输出方式类似) filename.txt 为前面下载的文件名。
    • 解释:此外, 读取一个较大的文本文件Gone_with_the_wind.txt实验对比程序执行效率,做如下改进,比较改进前后程序执行时间
      • 选项 -f 表示后面跟文件名
      • 输出格式规定(参考作业3中的示例):
        • 首先按照频率由高到低排序
        • 频率一样的词, 按照字典顺序排序

    改动的地方之一就是将结果保存到文件中,读取部分就由队友代劳了:

    void PrintResult()//建立一个输出函数
    {
     FILE* fp1=fopen("Result1.txt", "w");//建立一个新的文件,并把结果保存到文件中
     if(NULL == pHead)
        {
            printf("No Word!!
    ");
        }
        else
        {
            WordNode *pCurr = pHead;
    while(NULL != pCurr)
            {
       
        
                fprintf(fp1,"%s	%d
    ", pCurr->word, pCurr->times);
                printf("%s	%d
    ", pCurr->word, pCurr->times);
                pCurr = pCurr->pNext;
      }
       fclose(fp1);
    

     对频率进行排序:

    void SortWordDown(Word * words, int size)  
    {  
        for(int i=0;i<size;i++)  
        {
            for(int j=0;j <size-1;j++)  
            { 
                if(words[j].Count<words[j+1].Count)  
                {  
                    words[j].exchange(words[j+1]);  
                }  
            }  
        }  
    }  
    

     还有基本的识别单词和大小写转化等:

    void array(char x[])    
    {   int k = 0;
        while (x[k] != '')
        {
            if (x[k] >= 'A'&&x[k] <= 'Z')
                x[k] = x[k] + 32;
            k++;
        }
    }
    
    int identity(char a[]) 
    {   int m=(strlen(a)>=4)?1:0;
        int n=(a[0]>='a'&&a[0]<='z')?1:0;
        if(!m||!n)
            return 0;
        else
            while(a)
            {   for(int i=1;;i++)
               {  
                   if(!(a[i]>='a'&&a[i]<='z')||!(a[i]>='0'&&a[i]<='9'))
                            return 0;
                   else
                            return 1;
               }
            }
    }
    

     其他部分就由队友代劳了

    结果:

    完整的代码请看:https://github.com/MocQiQi/homework

    总结:对于这次的结对练习,两个人的交流显得格外重要,分工合作,两个人相互讨论,相互学习对方写程序的优点,这样一来不仅提高了效率,也节省了时间。虽然在结对的过程中,两个人也会因为意见不同而有些小的争吵,也正因为这样,两个人都有了不同的进步。希望以后能够多学习,多交流,感谢队友在这次编程中给我的帮助和支持。

  • 相关阅读:
    问题
    cas restful接口实现SSO
    变量,数据类型
    注释
    下载,配置环境变量,第一个demo
    数据挖掘概念与技术(韩家伟)阅读笔记1
    pattern与matcherr
    Array.sort排序
    linux下C语言中的flock函数用法 【转】
    我为什么要进国企----HP大中华区总裁孙振耀退休感言
  • 原文地址:https://www.cnblogs.com/youwanqing/p/5308846.html
Copyright © 2020-2023  润新知