演習 5-9

#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;
}

3 件のコメント:

  1. 100点をとった場合のカウントがされていませんでした

    printf("1~100") という部分は ("1~%d",NUMBER)だと思います。

    返信削除
  2. 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;

    に書き換える。

    コメントで囲ってあるところが変更点である。

    返信削除
  3. bunpu[3]とbunpu[6]が同値だった場合上書きされて正しいグラフにならないと思うのですが、間違っていますか?

    返信削除