首页 > 其他 > 详细

词频统计

时间:2016-03-16 17:19:47      阅读:143      评论:0      收藏:0      [点我收藏+]

题目:词频统计

开发语言:C++

开发工具:Visual Studio 2013

源码:词频统计.cpp

 


 

1要求

 

     实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率。 附加要求:读入一段文本文件,统计该文本文件中单词的频率。

 

2、计划

 

     思路用10min,编写程序2h

 

3、时间

 

     在实际编程中,想出第一个思路用时几分钟,但是将它编写成初步框架不容易,弃。后来又想了几个思路,当与实际编程挂钩时都不太好实现。最后还是参考了网上的一些资 源

 

4、源码

 

#include"stdafx.h"
#include<iomanip>
#include<cstring>
#include <iostream>//
using namespace std;
struct word{//单词结构
    char c[30];//放置单词
    int n;//放置单词出现次数
}w[10000];

void  main(void)
{
    char b[30], Str[30000];//定义单词数组,字符串数组
    int i = 0, m = 1, k = 0, flag = 0, x = 0;
    cout << "请输入字符串:";
    while (cin.get(Str[x]), Str[x++] != \n);//从空格开始读取单词字符
    Str[x - 1] = \0;
    x = 0;
    while (Str[x]){
        if (A <= Str[x] && Str[x] <= Z || a <= Str[x] && Str[x] <= z) {//判断是否是单词
            b[i++] = Str[x];//如果是的话将字符放到单词数组中
            
            flag = 1;
        }
        else if (flag){
            b[i] = \0;
            flag = m = 0;
            for (i = 0; i<k; i++){
                if (strcmp(b, w[i].c) == 0){//比较单词是否相同
                    m = 1;
                    break;
                }
            }
            if (!m){
                w[k].n = 1;
                strcpy_s(w[k++].c, b);//不相同就保存
            }
            else w[i].n++;//相同,出现次数加1
            i = 0;
        }
        x++;
    }
    for (i = 0; i<k; i++)
        cout << w[i].c << "   " << w[i].n << endl;//依次输出单词结构中的单词和个数
    cout << endl;
}

 

 

5、运行结果


技术分享

 

6、小结

 

     我以为程序只要有思路,细节什么的再按照具体语言填充就好了。但是这次作业想了几个思路,我都不好把它们C++程序化,果然是想的太简单了,而且感觉问题好像又回到“编程思想”上了。

    另外,在这次作业中我还学到了关于指针计数和结构体的一些用法。

 


参考:

      统计字符串中单词的个数      

     输入一段英文文本,用程序统计出现频率最高和最低的两个单词

   

词频统计

原文:http://www.cnblogs.com/-XQ-/p/5280837.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!