词频统计器(第二版)
功能:输入一个txt文件,输出文件中的总单词数及每个单词的出线次数
要求1:控制台下输入命令
结果:
代码:
#include<stdio.h> #include<string.h> #include<iostream> #include<fstream> #include<string> #include<map> #include <iomanip> using namespace std; int main() { FILE *fp1; char text[1024]; char s[100]; gets(s); //fp1=fopen("d:\\2.txt","r"); fp1=fopen(s,"r"); int n=0; int i; map<string,int>my_map; while(fgets(text,1024,fp1)!=NULL) { //puts(text); i=0; while(text[i]!='\0') { char s[30]; int j=0; while((text[i]>='a'&&text[i]<='z')||(text[i]>='A'&&text[i]<='Z')) { if(text[i]>='A'&&text[i]<='Z') text[i]+='a'-'A'; s[j++]=text[i++]; } s[j]='\0'; if(my_map[s]==0) n++; my_map[s]++; if(text[i]=='\0') break; else i++; } } fclose(fp1); map<string,int>::iterator it; cout<<"total"<<" "<<n<<endl<<endl; for(it=my_map.begin(),i=1;it!=my_map.end();it++,i++) { if(it->first=="") continue; cout<<left; cout<<setw(10)<<it->first<<setw(10)<<it->second; if(i%4==0) cout<<'\n'; } cout<<'\n'; return 0; }
要求2:支持命令行输入英文作品的文件名
结果:
代码:见要求1代码
要求3:支持命令行输入存储有英文作品文件的目录名,批量统计。(未完成)
要求4:从控制台读入英文单篇作品
结果:
代码:
#include<stdio.h> #include<string.h> #include<iostream> #include<fstream> #include<string> #include<map> #include <iomanip> using namespace std; int main() { FILE *fp1; char text[1024]; char s[100]; //gets(s); fp1=fopen("d:\\卖火柴的小女孩.txt","r"); //fp1=fopen(s,"r"); int n=0; int i; map<string,int>my_map; while(fgets(text,1024,fp1)!=NULL) { puts(text); i=0; while(text[i]!='\0') { char s[30]; int j=0; while((text[i]>='a'&&text[i]<='z')||(text[i]>='A'&&text[i]<='Z')) { if(text[i]>='A'&&text[i]<='Z') text[i]+='a'-'A'; s[j++]=text[i++]; } s[j]='\0'; if(my_map[s]==0) n++; my_map[s]++; if(text[i]=='\0') break; else i++; } } fclose(fp1); map<string,int>::iterator it; cout<<"total"<<" "<<n<<endl<<endl; for(it=my_map.begin(),i=1;it!=my_map.end();it++,i++) { if(it->first=="") continue; cout<<left; cout<<setw(10)<<it->first<<setw(10)<<it->second; if(i%4==0) cout<<'\n'; } cout<<'\n'; return 0; }
coding.net git@git.coding.net:w547240561/myboke.git
https://git.coding.net/w547240561/myboke.git