⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 统计单词.cpp

📁 初学者的源c代码
💻 CPP
字号:
/* 分类统计文章(存放在文件中)中各个单词出现的个数,并按照出现
次数从高到低的顺序排序,结果存入文件中。(文章的单词分隔符号可以随意
指定)

文件必须为英语
*/
#include <iostream>
#include <string.h>
using namespace std;
class typeword 
{
public:
	char word[50];
	int n;
};
void putin(char *filename,char *divide,FILE *fp);
int count(char *tmp,int *n,typeword a[100]);
void sort(int n,typeword a[100]);
void print(int n,typeword a[100]);
void main()
{
	FILE *fp;
	char filename[50];
	char divide[]=",;. \r\t\n";
	
	cout<<"请输入文件路径:"<<endl;
	gets(filename); 
	if((fp=fopen(filename,"r"))==NULL)
	{
		cout<<"cann't open file"<<endl;
		cout<<"请从新输入文件路径:"<<endl;
		while((fp=fopen(filename,"r"))==NULL)
		{
			gets(filename); 
		}
	}
	putin(filename,divide,fp);
}

void putin(char *filename,char *divide,FILE *fp)
{
	int i,k=0;
	char c;
	char tmp[100];
	int n=0,flag=1; //n为单词中个数
	typeword a[100]; 
	
	while(1)
	{
		fscanf(fp,"%c",&c); 
		if(feof(fp))
		{
			if(k!=0) //判断文件最后是否有分割符
			{
				count(tmp,&n,a);
			}
			sort(n,a);
			print(n,a);
			return ;
		}
		for(i=0;divide[i]!='\0';i++)
		{
			if(c==divide[i])
			{
				if(flag==0)
				{
					flag=1;
					k=0;
					n=count(tmp,&n,a);
					break;
				}
				else
					break;
			}
		}
		if(divide[i]=='\0')
		{
			flag=0;
			tmp[k++]=c;
			tmp[k]='\0';
		}
		
	}
	
	
}
int count(char *tmp,int *n,typeword a[100])
{
	
	int i=0; 
	
	if(*n==0)
	{
		strcpy(a[0].word,tmp);
		a[0].n=1;
		(*n)++;
	}
	else
	{
		for(i=0;i<*n;i++)
		{
			if(strcmp(a[i].word,tmp)==0)
			{
				a[i].n++;
				break;
			}
		}
		if(i==*n)
		{
			
			a[*n].n=1;
			strcpy(a[*n].word,tmp);
			(*n)++;
		}
	}
	return *n;
}
void sort(int n,typeword a[100])
{
	int i,j,max;
	typeword tmp;
	
	for(i=0;i<n;i++)
	{
		max=i;
		for(j=i+1;j<n;j++)
		{
			if(a[max].n<a[j].n)
			{
				max=j;
			}
		}
		if(max!=i)
		{
			tmp=a[max];
			a[max]=a[i];
			a[i]=tmp;
		}
	}
}
void print(int n,typeword a[100])
{
	int i;
	
	cout<<"单词出现的个数排序:"<<endl;
	for(i=0;i<n;i++)
	{
		cout<<"单词:"<<a[i].word<<"  个数:"<<a[i].n<<endl;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -