求助:英文文档词频统计程序设计!!
本人正在进行程序设计,是有关英文词频统计代码的,主用c++编写,哪位懂的话可以给我点帮助的感激哦!要快哈……实现一个英文文档的词频统计分析系统。要求能对一段英文统计出所给...
本人正在进行程序设计,是有关英文词频统计代码的,主用c++编写,哪位懂的话可以给我点帮助的感激哦!要快哈……实现一个英文文档的词频统计分析系统。要求能对一段英文统计出所给字母的出现次数百分比,并给出分布图或表。同时能对手动输入的字母和单词进行词频统计。用C++编写...求助!!需要源程序~~~速度啊...答得好的加分啊...
展开
3个回答
2013-07-27
展开全部
#include <iostream>
using namespace std;
void main()
{
char str[100];
char letter[52];
int count[52]={0};//初始化计数器
int i;
int lc=0;//记录字母总数
cout<<"输入字符串:"<<endl;
cin.getline(str,100);//输入字符串
//初始化字母表
for(i=0;i<26;i++)
letter[i]='A'+i;
for(i=26;i<52;i++)
letter[i]='a'+i-26;
i=0;
while(str[i]!='\0')//字符串未结束时
{
if(str[i]>='A' && str[i]<='Z')//如果是大写字母
{
count[str[i]-65]++;//假设str[i]=='A',有'A'-65等于0,count[0]自增1
lc++;
}
if(str[i]>='a' && str[i]<='z')//如果是大写字母
{
count[str[i]-97+26]++;//'a'==97,前面26个是大写,所以加26
lc++;
}
i++;
}
for(i=0;i<52;i++)//显示统计情况
{
if(count[i]!=0)
printf("%c-%d-%3.2f%\n",letter[i],count[i],(float)count[i]/lc*100);
}
}
using namespace std;
void main()
{
char str[100];
char letter[52];
int count[52]={0};//初始化计数器
int i;
int lc=0;//记录字母总数
cout<<"输入字符串:"<<endl;
cin.getline(str,100);//输入字符串
//初始化字母表
for(i=0;i<26;i++)
letter[i]='A'+i;
for(i=26;i<52;i++)
letter[i]='a'+i-26;
i=0;
while(str[i]!='\0')//字符串未结束时
{
if(str[i]>='A' && str[i]<='Z')//如果是大写字母
{
count[str[i]-65]++;//假设str[i]=='A',有'A'-65等于0,count[0]自增1
lc++;
}
if(str[i]>='a' && str[i]<='z')//如果是大写字母
{
count[str[i]-97+26]++;//'a'==97,前面26个是大写,所以加26
lc++;
}
i++;
}
for(i=0;i<52;i++)//显示统计情况
{
if(count[i]!=0)
printf("%c-%d-%3.2f%\n",letter[i],count[i],(float)count[i]/lc*100);
}
}
2013-07-27
展开全部
用一个最懒的方法。建立一个结构体。
struct PP
{
char str[100];//字符串。
int num;//该字符串出现的个数。
};
PP Key [1000];//表。
int n;//表中元素。
对于扫描每一个单词,先看下在不在那个表里,如果不在,就存入。如果在,就找到该元素下标,然后,把那个num++,一直下去。。
当然这个效率是很慢的。想提高效率,
1.用哈希表做,即是字符串哈希,方便查找 。
2.存入的时候,用插入排序。使表中元素有序。查找的时候用二分查找。
struct PP
{
char str[100];//字符串。
int num;//该字符串出现的个数。
};
PP Key [1000];//表。
int n;//表中元素。
对于扫描每一个单词,先看下在不在那个表里,如果不在,就存入。如果在,就找到该元素下标,然后,把那个num++,一直下去。。
当然这个效率是很慢的。想提高效率,
1.用哈希表做,即是字符串哈希,方便查找 。
2.存入的时候,用插入排序。使表中元素有序。查找的时候用二分查找。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-27
展开全部
抱歉,帮不上你的忙了。实在太忙,没空给你写代码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询