プログラミング+α学習ブログ

勉強したことの備忘録です。

入力に出現する数字をカウントして縦向きの棒グラフで表示するプログラム

#include <stdio.h>

int main(void)
{
    int i, j, ch;
    int cnt_max = 0;    // 出現回数の最大値
    int cnt[10] = {0};  // 数字文字の出現回数
    
    while (1) { // 無限ループ
        ch = getchar();
        if (ch == EOF) break;
        
        if (ch >= '0' && ch <= '9')
            cnt[ch - '0']++;
    }
    
    for (i = 0; i < 10; i++)
        if (cnt[i] > cnt_max)
            cnt_max = cnt[i];
    
    puts("数字文字の出現回数\n");
    for (i = cnt_max; i >= 1; i--) {
        for (j = 0; j < 10; j++)
            if (cnt[j] >= i)
                printf(" * ");
            else
                printf("   ");
        putchar('\n');
    }
    for (j = 0; j < 10; j++)
        printf(" %d ", j);
    
    return (0);
}

実行結果

3.1415926535897932846
数字文字の出現回数

          *     *           * 
    *  *  *  *  *  *     *  * 
    *  *  *  *  *  *  *  *  * 
 0  1  2  3  4  5  6  7  8  9