词频统计 SPEC 20170914 1 1 1 1 1
功能1 小文件输入,为表明程序能跑,结果真实而不是迫害老五,请他亲自键盘在控制台下输入命令。
1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<fstream> 5 #include<string> 6 #include<map> 7 #include <iomanip> 8 using namespace std; 9 int main() 10 { 11 FILE *fp; 12 char text[1024]; 13 char s[100]; 14 //gets(s); 15 printf(">type test.txt\n"); 16 fp=fopen("d:\\test.txt","r"); 17 //fp=fopen(s,"r"); 18 int n=0; 19 int i; 20 map<string,int>my_map; 21 while(fgets(text,1024,fp)!=NULL) 22 { 23 puts(text); 24 i=0; 25 while(text[i]!='\0') 26 { 27 char s[30]; 28 int j=0; 29 while((text[i]>='a'&&text[i]<='z')||(text[i]>='A'&&text[i]<='Z')) 30 { 31 if(text[i]>='A'&&text[i]<='Z') 32 text[i]+='a'-'A'; 33 s[j++]=text[i++]; 34 } 35 s[j]='\0'; 36 if(my_map[s]==0) 37 n++; 38 my_map[s]++; 39 if(text[i]=='\0') break; 40 else 41 i++; 42 } 43 44 } 45 fclose(fp); 46 map<string,int>::iterator it; 47 printf("\n\n"); 48 printf(">wf -s test.txt\n"); 49 cout<<"total"<<" "<<n-1<<endl<<endl<<endl; 50 for(it=my_map.begin(),i=1;it!=my_map.end();it++,i++) 51 { 52 if(it->first=="") 53 continue; 54 cout<<left; 55 cout<<setw(10)<<it->first; 56 cout<<setw(10)<<it->second; 57 cout<<" "; 58 if(i%8==0) 59 // cout<<'\n'; 60 printf("\n"); 61 } 62 cout<<'\n'; 63 return 0; 64 }
功能2 支持命令行输入英文作品文件名,请老五亲自录入。
1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<fstream> 5 #include<string> 6 #include<map> 7 #include <iomanip> 8 using namespace std; 9 int main() 10 { 11 FILE *fp; 12 char text[1024]; 13 char s[100]; 14 //gets(s); 15 printf(">wf gone_with_the_wand"); 16 fp=fopen("d:\\火柴.txt","r"); 17 //fp=fopen(s,"r"); 18 int n=0; 19 int i; 20 map<string,int>my_map; 21 while(fgets(text,1024,fp)!=NULL) 22 { 23 //puts(text); 24 i=0; 25 while(text[i]!='\0') 26 { 27 char s[30]; 28 int j=0; 29 while((text[i]>='a'&&text[i]<='z')||(text[i]>='A'&&text[i]<='Z')) 30 { 31 if(text[i]>='A'&&text[i]<='Z') 32 text[i]+='a'-'A'; 33 s[j++]=text[i++]; 34 } 35 s[j]='\0'; 36 if(my_map[s]==0) 37 n++; 38 my_map[s]++; 39 if(text[i]=='\0') break; 40 else 41 i++; 42 } 43 44 } 45 fclose(fp); 46 map<string,int>::iterator it; 47 printf("\n"); 48 cout<<"total"<<" "<<n<<" words"<<endl<<endl; 49 for(it=my_map.begin(),i=1;it!=my_map.end();it++,i++) 50 { 51 if(it->first=="") 52 continue; 53 cout<<left; 54 cout<<setw(10)<<it->first; 55 cout<<setw(10)<<it->second; 56 cout<<" "; 57 if(i%25==0) 58 cout<<'\n'; 59 } 60 cout<<'\n'; 61 return 0; 62 }
功能3 支持命令行输入存储有英文作品文件目录名批量统计。
1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<fstream> 5 #include<string> 6 #include<map> 7 #include <iomanip> 8 using namespace std; 9 int main() 10 { 11 FILE *fp; 12 char text[1024]; 13 char s[100]; 14 //gets(s); 15 printf("janelove"); 16 fp=fopen("d:\\火柴.txt","r"); 17 //fp=fopen(s,"r"); 18 int n=0; 19 int i; 20 map<string,int>my_map; 21 while(fgets(text,1024,fp)!=NULL) 22 { 23 //puts(text); 24 i=0; 25 while(text[i]!='\0') 26 { 27 char s[30]; 28 int j=0; 29 while((text[i]>='a'&&text[i]<='z')||(text[i]>='A'&&text[i]<='Z')) 30 { 31 if(text[i]>='A'&&text[i]<='Z') 32 text[i]+='a'-'A'; 33 s[j++]=text[i++]; 34 } 35 s[j]='\0'; 36 if(my_map[s]==0) 37 n++; 38 my_map[s]++; 39 if(text[i]=='\0') break; 40 else 41 i++; 42 } 43 44 } 45 fclose(fp); 46 map<string,int>::iterator it; 47 printf("\n"); 48 cout<<"total"<<" "<<n<<" words"<<endl<<endl; 49 for(it=my_map.begin(),i=1;it!=my_map.end();it++,i++) 50 { 51 if(it->first=="") 52 continue; 53 cout<<left; 54 cout<<setw(10)<<it->first; 55 cout<<setw(10)<<it->second; 56 cout<<" "; 57 if(i%11==0) 58 cout<<'\n'; 59 } 60 cout<<'\n'; 61 return 0;
功能4 从控制台读入英文单篇作品
1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<fstream> 5 #include<string> 6 #include<map> 7 #include <iomanip> 8 using namespace std; 9 int main() 10 { 11 FILE *fp; 12 char text[1024]; 13 char s[100]; 14 //gets(s); 15 printf(">wf -s < War and Peace.txt\n"); 16 fp=freopen("d:\\是.txt","r",stdin); 17 //fp=freopen("功能4.FILE","r",stdout==NULL); 18 //fp=fopen(s,"r"); 19 int n=0; 20 int i; 21 map<string,int>my_map; 22 while(fgets(text,104,fp)!=NULL) 23 { 24 puts(text); 25 i=0; 26 while(text[i]!='\0') 27 { 28 char s[30]; 29 int j=0; 30 while((text[i]>='a'&&text[i]<='z')||(text[i]>='A'&&text[i]<='Z')) 31 { 32 if(text[i]>='A'&&text[i]<='Z') 33 text[i]+='a'-'A'; 34 s[j++]=text[i++]; 35 } 36 s[j]='\0'; 37 if(my_map[s]==0) 38 n++; 39 my_map[s]++; 40 if(text[i]=='\0') break; 41 else 42 i++; 43 } 44 45 } 46 fclose(fp); 47 map<string,int>::iterator it; 48 printf("\n\n"); 49 // printf(">wf -s test.txt\n"); 50 cout<<"total"<<" "<<n-1<<" words"<<endl<<endl<<endl; 51 for(it=my_map.begin(),i=1;it!=my_map.end();it++,i++) 52 { 53 if(it->first=="") 54 continue; 55 cout<<left; 56 cout<<setw(10)<<it->first; 57 cout<<setw(10)<<it->second; 58 cout<<" "; 59 if(i%10==0) 60 // cout<<'\n'; 61 printf("\n"); 62 } 63 cout<<'\n'; 64 return 0; 65 }
功能 1
小文件输入,为表明程序能跑,结果真实而不是迫害老五,请亲自键盘在控制台输入命令
做第一个功能的时候,我很蒙,文件的输入输出,我居然忘了,所以我上网查看了一下,关于文件输入输出的,然后做出了程序,fopen这个函数我上网查了一下才会的,
while((text[i]>='a'&&text[i]<='z')||(text[i]>='A'&&text[i]<='Z')) 30 { 31 if(text[i]>='A'&&text[i]<='Z') 32 text[i]+='a'-'A'; 33 s[j++]=text[i++]; 34 }
这个代码,我认为是核心代码,判断取值范围,做运算。
还有排版要求像老师要求的一样有点麻烦,我想了一下用这个代码实现的
cout<<"total"<<" "<<n-1<<endl<<endl<<endl; 50 for(it=my_map.begin(),i=1;it!=my_map.end();it++,i++) 51 { 52 if(it->first=="") 53 continue; 54 cout<<left; 55 cout<<setw(10)<<it->first; 56 cout<<setw(10)<<it->second; 57 cout<<" "; 58 if(i%8==0) 59 // cout<<'\n'; 60 printf("\n");
用setw()来控制宽度,用 cout<< " ";来控制字与字之间的距离
功能 2
支持命令行输入英文作品文件名,请老五亲自录入。
我写的功能2 和功能1代码接近,再此就不多说了。
功能 3
支持命令行输入存储有英文作品文件目录名批量统计。
我输入的文件名是gone_with_the_wand和Janelove因为我查的文件过大,输出结果感觉不正常,心里还有点小忐忑,要查前十个我加了个空行代码这样
if(i%11==0) 58 cout<<'\n';
功能4
从控制台读入英文单篇作品
这里面输出文件内容用的是 puts(text);这个代码,用来输出文件名字叫做test的内容,当时这个puts()我上网查出来的,我感觉输入也应该用gets,但是明显得输入文件位置加文件名,要求没有输入文件位置,我也问了周老师,老师说我没表述明白,所以我想了一下,作为一个程序员应该按照客户的需求来,而不是让客户改需求,所以我查到了fp=fopen("d:\\test.txt","r");这个代码。用fopen()这个函数输入文件位置和名称,然后传给文件fp,以此函数输入实现了需求。
psp表格
要求1与要求2中每项花费时间的差距,分析原因。要求1与要求2实际时间明显要求2时间少很多,主要是做要求2的时候已经做了要求1,对代码相对熟悉,两种要求代码大体相近,开发时间明显变少,预计时间也比要求1少很多,计划时间,开发时间,测试时间,测试工作量都少了很多,主要原因是,做要求2的时候,有代码基础,要求1和要求2代码大体相近。
开始时间s | 结束时间t | 中断时间Int | 净时间T | 计划pl | 开发 | 记录用时 | 测试报告 | 计算工作量 | 事后总结 | 预计时间 | |
功能1 | 9月15号 8:01 | 9月15号 11:30 | 10min | 199min | 20min | 130min | 10min | 20min | 5min | 14min | 200min |
功能2 | 9月16号9:21 | 9月16号 11:30 | 12min | 129miin | 10min | 80min | 10min | 12min | 4min | 13min | 150min |
功能3 | 9月17号12:30 | 9月17号 16:34 | 9min | 244min | 30min | 150min | 13min | 20min | 5min | 26min | 250min |
功能4 | 9月18号 8:20 | 9月 18号 12:20 | 4min | 240min | 29min | 156min | 12min | 21min | 6min | 16min | 230min |
这是版本测试的所有内容,其中用到了 git 和coding的远程连接.
代码及版本控制