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

📄 statistics.cpp

📁 做为SD0609的一员,我扎实的基础是如何打出来的,来看看我那时连猴子选大王都不会的人,是如何成长起来的吧!主要包括我所做的C++,JAVA基础联系.乱是乱了点,不过如果真心想学习,打好基础,看看也不
💻 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 + -