个人项目 - 词频统计
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了个人项目 - 词频统计相关的知识,希望对你有一定的参考价值。
目标与要求
- 使用开发工具
- 使用源代码管理工具
详细要求:
1. 实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率。
附加要求:读入一段文本文件,统计该文本文件中单词的频率。
2. 性能分析:
+对C++代码运行VS的性能分析工具,找出性能问题并进行优化。
+对Java程序运行性能分析工具 NetBeans IDE 6.0,找出性能问题并进行优化。
详细内容
- 开发语言:C++
- 开发工具:Codeblocks
- 准备工作:
- 思路
(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 }
- 所遇问题
- 怎么解决用两种方式来进行原数据的导入?
将两种方式的数据导入都存入数组中以便后面读取。
2. 怎么样可以减小时间复杂度和空间复杂度?
尽量的减少循环语句的使用和新空间的调用。
- 小结
对于将问题细分化有了更实际的操作练习;对于关注用户界面体验有了初步的感受和认识;
对于一个程序在空间和时间上的利用有了初步的简化练习;对于某些平时没接触过的库进行了了解;
- 源代码Github地址
https://github.com/Jennyhyt/My-source-code
以上是关于个人项目 - 词频统计的主要内容,如果未能解决你的问题,请参考以下文章