请教一个数字母个数的C++编程题目
昨天碰到这样一个问题.要求用一个对象数组来找出在一个文本中每一个字母的百分数,只要数字母的个数其他的不需要数.得到的百分数结果用冒泡法降序排列.最大的百分数输出长度是50,并保留2个有效数字.
输出结果如下(一个例子):
Number of letter: 400
-----------------------------------------
e: **************************************(19.23%)
n: ********************(9.70%)
i: *******************(9.43%)
r: ******************(6.48%)
...
x: 0%
以下是Counter类的定义(是个人意见不知道有没有更好的)
class Counter
{
int count;
static int total;
public:
Counter(){count=0;}
~Counter(){}
void inc(char); 不会写有问题
int get_count(){return count}
static int get_total(){return total;}
double get_percent(){return ((double)count/(double)total)*100;}
如果有需要可以在加函数
}
int Counter::total=0;
有谁能帮帮我
第一个问题是怎么写void inc(),我想设置
void Counter::inc(char letter)
{
if(letter > = 'A '&& letter <= 'Z ')
{
count++;
total++;
}
else if(letter > = 'a '&& letter <= 'z ')
{
count++;
total++;
}
}
另一个问题是如何写主函数
const int MAX=26;
void main(){
Counter Count_26_letter[MAX];
???
[解决办法]
#include "string.h "
#include "stdio.h "
class Counter
{
struct res
{
char c;
int count;
} m_count[52];
int m_total;
public:
Counter()
{
m_total = 0;
memset(m_count, 0 , sizeof(res)*52);
int i;
for(i = 0; i < 26; ++i)
{
m_count[i].c = 'A ' + i;
}
for(i = 26; i < 52; ++i)
{
m_count[i].c = 'a ' + i - 26;
}
}
~Counter(){}
void count(char* str)
{
int len = strlen(str);
for(int i = 0; i < len; ++i)
{
if(str[i] > = 'A '&& str[i] <= 'Z ')
{
m_count[str[i]- 'A '].count++;
m_total++;
}
else if(str[i] > = 'a '&& str[i] <= 'z ')
{
m_count[str[i]- 'a '+26].count++;
m_total++;
}
}
//进行排序
sort()
}
void sort()
{
//冒泡排序就不写了
}
void print()
{
printf( "Number of letter: %d\n ", m_total);
for(int i = 0; i < 52; ++i)
{
if(m_count[i].count == 0)
continue;
printf( "%c: ", m_count[i].c);
float present = float(m_count[i].count)/m_total*100;
for(int j = 0; j < present; ++j)
{
printf( "* ");
}
printf( "(%02f%%)\n ", present);
}
}
};
int main()
{
Counter a;
a.count( "asfgajkgfeugksufjkdsagurgafkasg ");
a.print();
return 1;
}