词频统计(结对编程)

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

结对对象:张琪琪(博客: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!!\n");
    }
    else
    {
        WordNode *pCurr = pHead;
while(NULL != pCurr)
        {
   
    
            fprintf(fp1,"%s\t%d\n", pCurr->word, pCurr->times);
            printf("%s\t%d\n", 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] != '\0')
    {
        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

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

转载于:https://www.cnblogs.com/youwanqing/p/5308846.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值