1-13 histgram.c
とりあえず集計する単語の長さは1〜10文字に。あとはその他扱い。
/* * P29 演習1-13 * 入力した単語の長さをヒストグラム(度数分布図)にしてプリントする * プログラムを書け。ヒストグラムは横に書くほうが簡単だが、縦書きに * 挑戦してみるのもよい。 * * 2007/05/22 arikui */ #include <stdio.h> #define TRUE 1 #define FALSE 0 #define WORD_LENGTH_LIMIT 10 int main(void){ int c, i, j, len, fl_nl; /* FLag; last output is New Line */ int count[WORD_LENGTH_LIMIT + 1]; /* count[0]; over 10-length word */ for(i = 0; i < (WORD_LENGTH_LIMIT + 1); i++) count[i] = 0; len = 0; fl_nl = FALSE; while((c = getchar()) != EOF){ if (c == ' ' || c == '\t' || c == '\n'){ if (fl_nl == FALSE){ if (len > WORD_LENGTH_LIMIT) ++count[0]; else ++count[len]; } len = 0; fl_nl = TRUE; }else{ ++len; fl_nl = FALSE; } } printf("length : times\n"); for(i = 1; i < (WORD_LENGTH_LIMIT + 1); i++){ printf("%6d : ", i); for(j = 0; j < count[i]; j++) putchar('*'); putchar('\n'); } printf("over10 : "); for(j = 0; j < count[0]; j++) putchar('*'); putchar('\n'); return 0; }