码迷,mamicode.com
首页 > 其他好文 > 详细

个人项目 - 词频统计

时间:2016-03-22 23:15:07      阅读:466      评论:0      收藏:0      [点我收藏+]

标签:

目标与要求


  • 使用开发工具
  • 使用源代码管理工具

详细要求:

1. 实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率。

附加要求:读入一段文本文件,统计该文本文件中单词的频率。

 

2. 性能分析:

+对C++代码运行VS的性能分析工具,找出性能问题并进行优化。

+对Java程序运行性能分析工具 NetBeans IDE 6.0,找出性能问题并进行优化。


 

 

 

详细内容


  • 开发语言:C++    
  • 开发工具:Codeblocks
  • 准备工作:
  1. 思路

(1)由用户选择是自主输入一段英文字符串,还是读入一段文本文件。

(2)将录入的字符串分割成若干英文单词。

(3)将分割出来的英文单词进行筛选(长度小于4的不统计,大写字母转换成小写字母,首字母为非字母数字的单词不统计,)其中的大写字母转换成小写字母以便于之后的统计。

(4)统计并输出结果。

 

2.  预计时间

编写+调试+验证=2H左右

 

  • 源代码
 1 #include<iostream>
 2 #include<fstream>
 3 #include<cstring>
 4 #include<cctype>
 5 using namespace std;
 6 
 7 void screen(int chioce)      //对内容进行筛选
 8 {
 9     char input[50][50],newinput[50][50],newopen[100];
10     char *open;
11     if(chioce==1)            //以输入方式对字符串进行存储与筛选
12     {
13         cout<<"请输入一串字符串,以回车键作为结束:";
14         for(int m=0;input[m]!=\0;m++)     //将字符串以二维字符数组的形式储存起来
15         {
16             for(int n=0;input[n]!=\0;n++)
17             {
18                 cin>>input[m][n];
19             }
20         }
21         for(int m=0;input[m]!=\0;m++)//将输入的字符串的大写转换为小写
22         {
23             for(int n=0;input[m][n]!=\0;n++)
24             {
25                 if(input[m][n]>=A&&input[m][n]<=Z&&strlen(input)>=4)   //限制字符串大小为4
26                 {
27                     int i=0,j=0;
28                     newinput[i][j]=toupper(input);
29                 }
30             }
31         }
32         sta(newinput,m*n);
33     }
34 
35     else        //以录入方式对字符串进行存储与筛选
36     {
37         int i=0,n;
38         cout<<"请将所需文本存入D:\\open.txt";
39         ifstream open("D:\\open.txt");
40         open=new int[n];
41         while(open>>open[i],strlen(open)>=4)  //字符串大于4的才给予储存的机会
42         {
43             newopen[i]=toupper(open);         //大写转换成小写
44             i++;
45         }
46         sta(newopen,i);
47     }
48 }
49 
50 void sta(char word[],int wordnum[])          //统计单词出现的次数
51 {
52     char newword[],newwordnum[];
53     cout<<"统计的单词出现的次数如下:\n";
54     for(int i=0;;i++)
55     {
56         for(int j=0;if(strcmp(newword[i],word[j]));j++)
57         {
58             newwordnum[i]++;
59         }
60         cout<<newword[i]<<\t<<newwordnum[i]<<endl;
61     }
62 
63 }
64 
65 
66 int main( )
67 {
68     int chioce;
69     cout<<"请问是输入一串字符串还是导入一个文本文件?(1:字符串,2;文本文件):";
70     cin>>chioce;
71     if(chioce==1||chioce==2)        //用户选择
72     {
73         screen(chioce);
74     }
75     return 0;
76 }
  • 所遇问题
  1. 怎么解决用两种方式来进行原数据的导入?

     将两种方式的数据导入都存入数组中以便后面读取。

  2.  怎么样可以减小时间复杂度和空间复杂度?

     尽量的减少循环语句的使用和新空间的调用。

  • 小结

对于将问题细分化有了更实际的操作练习;对于关注用户界面体验有了初步的感受和认识;

对于一个程序在空间和时间上的利用有了初步的简化练习;对于某些平时没接触过的库进行了了解;

  • 源代码Github地址

https://github.com/Jennyhyt/My-source-code

个人项目 - 词频统计

标签:

原文地址:http://www.cnblogs.com/hyating/p/5280021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!