| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 653 人关注过本帖
标题:我的这个字母使用频率的程序哪错了 求答案
取消只看楼主 加入收藏
hehe214
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-6-28
结帖率:0
收藏
已结贴  问题点数:10 回复次数:4 
我的这个字母使用频率的程序哪错了 求答案
#include <iostream>
using namespace std;

int a(int * r , char * str); //统计
void b(int * r , char * str, int l ); //显示, 可设置升序/降序

void c(int * r , int l )
{
cout<<"l="<<l <<endl;
cout<<"使用频率表:"<<endl;
for(int i=0;i<26; i++)
cout<<char('A'+i)<<":"<<r [i]<<endl;
}

void main()
{
cout<<"输入:";
char str[201];
cin>>str;
int r [26]; //统计26个字母出现频率 & initiate
int l =a(r ,str); //串长度(不含\0)
cout<<"已排序字符串: ";
b(r ,str,l );
c(r ,l );
}

int a(int * r , char * str)
{
int l =0;
for(int i=0;i<26;++i)
r [i]=0; for(i=0;str[i]!=0;++i)
{
//判断是否字母
//大写
if(str[i]>='A'&&str[i]<='Z')
//yes
 r[(str[i]-'A')]++; //指定字母频率表(出现次数)+1
//小写
if(str[i]>='a'&&str[i]<='z')
 r[(str[i]-'a')]++; //同上
//后续操作
 l++ ; //统计长度
}
return l ;
}
void b(int * r ,char * str, int l )
{
int t [26]; //临时, 存放已排序字母频率
for(int i=0;i<26;++i)
t [i]=0;
int s ; //操作寄存器
for(i=26;i>0; i--)
{
s =0;
for(int j=0;j<i; j++)
{
//获取目前最大的频率
if(r[s ]<r[j])
s =j;
}
if(r [s ]!=0)
{
//得到当前最大频率r [s ]
//显示该字母
for(j=0;j<l ; j++)
{
if(str[j]>='A'&&str[j]<='Z')
{
if(str[j]=='A'+s )
cout<<str[j];
}
if(str[j]>='a'&&str[j]<='z')
{
if(str[j]=='a'+s )
cout<<str[j];
}
}
}
r[s]=0;
}
cout<<endl;
}
 
搜索更多相关主题的帖子: 频率 字母 
2010-06-28 10:51
hehe214
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-6-28
收藏
得分:0 
谢谢了
2010-06-28 14:22
hehe214
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-6-28
收藏
得分:0 
貌似还是不对
2010-06-28 16:31
hehe214
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-6-28
收藏
得分:0 
谢谢大家对我的帮助
2010-06-28 22:14
hehe214
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-6-28
收藏
得分:0 
终于对了 谢了 明天程序设计答辩终于有着落了
2010-06-29 09:00
快速回复:我的这个字母使用频率的程序哪错了 求答案
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012349 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved