📄 statistics.cpp
字号:
#include <iostream>
using namespace std;
struct Letter//定义字符结构
{
char ch;//字符
int count;//出现次数
int order;//出现次序
};
void init( Letter *p );//初始化结构数组
void count( Letter a[], char ch );//统计一个
void sort( Letter a[] );//按出现次数和次序排序
void show( Letter *p );//输出结果
void adjust( Letter& c1, Letter& c2 );//调整两个字符的位置
int main()
{
Letter cnt[256]={};
init( cnt );
char ch;
cout << "input some text( end by '$' ):\n";
for(;;)
{
cin >> ch;
if( ch=='$' )
break;
count( cnt, ch );
}
//sort by count and order
sort( cnt );
//show the result
show( cnt );
return 0;
}
void init( Letter *p )
{
for( int i=0; i<256; i++ )
{
p++->ch = i;
}
}
void count( Letter a[], char ch )
{
static int order=0;
if( a[ch].count==0 )
{
a[ch].order = ++order;
}
a[ch].count++;
}
void sort( Letter a[] )
{
for( int i=0; i<256; i++ )
{
for( int j=0; j<i; j++ )
{
adjust( a[j], a[i] );
}
}
}
void show( Letter *p )
{
for( int i=0; i<256 && p->count!=0; i++ )
{
cout << p->ch << ':' << p->count << endl;
p++;
}
}
void adjust( Letter& c1, Letter& c2 )
{
if( c1.count>c2.count )
return;
if( c1.count==c2.count && c1.order<c2.order )
return;
Letter t = c1;
c1 = c2;
c2 = t;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -