配列について その2
Posted: 2014年9月19日(金) 00:38
再度投稿させていただきます。
前回完成したプログラムに加えて、*で分布グラフを作るプログラムを追加したのですが、
プログラムの動作の途中で動作が止まってしまい失敗してしまいます。
どの部分を修正したらいいか教えてください。
グラフはこんなかんじです。
|*
|***
|*****
|**
|
|
|*
|
何度も投稿すみませんが、よろしくお願いします。
前回完成したプログラムに加えて、*で分布グラフを作るプログラムを追加したのですが、
プログラムの動作の途中で動作が止まってしまい失敗してしまいます。
どの部分を修正したらいいか教えてください。
グラフはこんなかんじです。
|*
|***
|*****
|**
|
|
|*
|
#include<stdio.h>
#define NUM 100
int main(void)
{
int i,j,tmp;
int sum = 0;
int ten[NUM];
int yu,ryo,ka,hu;
int bunpu[10] = {0};
printf("成績処理を行います。終了するときは999を入力してください。\n");
yu = 0; //初期値の設定
ryo = 0;
ka = 0;
hu = 0;
i=0;
while(i<NUM){
printf("No.%d: ",i+1);
scanf("%d",&ten[i]);
if(ten[i] == 999){ //999が入力されたら終了
break;
}else if(ten[i] >= 0 && ten[i] <= 100){ //もし0~100点が入力されたら加算
sum += ten[i];
i++; //次の人の点数
}else{
printf("正しい数値を入力してください。\n");
continue; //今回のループの処理を打ち切りループのブロックの最終行の次の処理へ
}
if(ten[i-1] < 60){
hu++; //60点未満なら不可にカウント
}else if(ten[i-1]<=69){
ka++; //69点以下なら可にカウント
}else if(ten[i-1]<=79){
ryo++; //79点以下なら良にカウント
}else{
yu++; //それ以上は優にカウント
}
bunpu[ten[i]/10]++;
}
puts("グラフ");
printf(" |");
for(j = 0;j<bunpu[i];j++)
putchar('*');
putchar('\n');
for(i = 8;i>= 0;i++){
printf(" |");
for(j = 0; j < bunpu[i];j++)
putchar('*');
putchar('\n');
}
printf("%d人の処理結果\n",i);
printf("合計点:%d\n",sum);
printf("平均点:%.2f\n",(double)sum/i);
printf("「優」の数%d人\n",yu);
printf("「良」の数%d人\n",ryo);
printf("「可」の数%d人\n",ka);
printf("「不可」の数%d人\n",hu);
return 0;
}