#include <stdio.h>
#define NUMBER 80
int main(){
int i, j, max;
int num;
int tensu[NUMBER];
int bunpu[11] = { 0 };
printf("人数を入力して下さい:");
do{
scanf("%d", &num);
if (num < 1 || num > NUMBER){
printf("\a1~%dで入力して下さい:", NUMBER);
}
} while (num < 1 || num > NUMBER);
printf("%d人の点数を入力して下さい。\n", num);
for (i = 0; i < num; i++){
printf("%2d番:", i + 1);
do{
scanf("%d", &tensu[i]);
if (tensu[i] < 0 || tensu[i] > 100){
printf("\a1~100で入力して下さい:");
}
}while (tensu[i] < 0 || tensu[i] > 100);
bunpu[tensu[i] / 10]++;
}
putchar('\n');
max = bunpu[0];
for (i = 1; i <= 10; i++){
if (max < bunpu[i]){
max = bunpu[i];
}
}
for (i = max; i > 0; i--){
for (j = 0; j <= 10; j++){
if (i == bunpu[j]){
printf("* ");
bunpu[j]--;
}
else{
printf(" ");
}
}
putchar('\n');
}
printf("---------------------------------\n");
printf("0 10 20 30 40 50 60 70 80 90 100\n");
return 0;
}
100点をとった場合のカウントがされていませんでした
返信削除printf("1~100") という部分は ("1~%d",NUMBER)だと思います。
100点を取った時がカウントされていない。
返信削除上記プログラムの max = bunpu[0]; 以下を
/* for (i = 1; i <= 10; i++){ */
if (max < bunpu[i]){
max = bunpu[i];
}
}
for (i = max; i > 0; i--){
/* for (j = 0; j <= 10; j++){ */
if (i == bunpu[j]){
printf("* ");
bunpu[j]--;
}
else{
printf(" ");
}
}
putchar('\n');
}
printf("---------------------------------\n");
printf("0 10 20 30 40 50 60 70 80 90 100\n");
return 0;
に書き換える。
コメントで囲ってあるところが変更点である。
bunpu[3]とbunpu[6]が同値だった場合上書きされて正しいグラフにならないと思うのですが、間違っていますか?
返信削除