词频统计器(第二版)

功能:输入一个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

 

posted @ 2016-09-13 13:05  王森123  阅读(175)  评论(1编辑  收藏  举报