試験の点数score[]の分布を求め,それを棒グラフ状に表示したいのですが、
点数は初期化子
C
1 int score[NUM]={3, 12, 46, 49, 17, 75, 50, 25, 69, 82, 41, 87, 54, 78, 64, 33, 46, 37, 52, 55, 54, 60, 41, 41, 35, 40, 62, 68, 60, 92};
として与えています。
横向きの棒グラフならかけると思うのですが、今回は次のような縦向きの棒グラフを書きたいのです。0-9, 10-19, ..., 90-99 の範囲で集計する)
このようなプログラム(縦向き棒グラフ)を作るとき、どのように書けばよいのか、分かりません。私のソースコードです。
ここまでは書けました。
これで実行してもうまくいきません。。
C
1#include <stdio.h> 2#define NUM 30 3#define BUNPU 10 4 5int main(void) 6{ 7 int score[NUM]={3, 12, 46, 49, 17, 75, 50, 25, 69, 82, 41, 87, 54, 78, 64, 33, 46, 37, 52, 55, 54, 60, 41, 41, 35, 40, 62, 68, 60, 92}; 8 9 10 int dist[BUNPU]={0}; 11 int i,j,k,total=0; 12 int dist_max=0; 13 14 if(score[NUM] > dist_max ){ /*度数の最大値を求める*/ 15 dist_max = score[NUM]; 16 } 17 for(i=0;i < NUM; i++){ 18 19 total += score[i]; 20 dist[score[i] /10]++; 21 22 for(j=30; j>0; j--){ /*最大値から1までをループ*/ 23 for(k=0;k < BUNPU; k++){ /*更に0からBUNPU-1までループする*/ 24 if(dist[k] >=j){ /*dist[j]がi以上なら'*'そうでないなら' 'を出力する。 */ 25 printf("*"); 26 }else{ 27 printf(" "); 28 } 29 } 30 printf("\n"); 31 } 32 } 33 34 35 return 0; 36} 37 38 39 40 41アドバイスをいただければ幸いです。お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/20 03:32
2016/11/20 03:52
2016/11/20 10:15