词频统计器(第二版)
功能:输入一个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
浙公网安备 33010602011771号