縦方向グラフの表示について
Posted: 2014年9月07日(日) 12:22
はじめまして、ゆうぼくと申します
最近C言語の書籍を購入して勉強し始めた初心者です
その書籍の演習問題でわからないものがあり書き込みさせて頂きました
内容は横グラフ表示のプログラムを
縦グラフを表示できるように書き換える内容なのですが
うまく表示させることが出来ません。
ベースとなる横グラフのソース
これを
*
* * * *
* * * * * * * * * *
------------------------------------------
0 10 20 30 40 50 60 70 80 90 100
のように表示できるように書き換える問題で
グラフの表示部分(ソースの32~44行目)を
に書き換えたのですが表示された内容は
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
-----------------------------------------
0 10 20 30 40 50 60 70 80 90 100
のようになってしまいました。
どのようにすれば見本のように表示させることができるのでしょうか?
お教え頂けると助かります。
ネットで調べてみると2次元配列を使って表示させる方法が出てきますが
書籍ではまだ多次元配列に入る前にこの演習問題が出てきています。
最近C言語の書籍を購入して勉強し始めた初心者です
その書籍の演習問題でわからないものがあり書き込みさせて頂きました
内容は横グラフ表示のプログラムを
縦グラフを表示できるように書き換える内容なのですが
うまく表示させることが出来ません。
ベースとなる横グラフのソース
/* 学生の点数を読み込んで分布を表示 */
#define NUMBER 80 /* 学生の上限 */
#include <stdio.h>
int main(void)
{
int i, j;
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]++;
}
puts("\n---分布グラフ---");
for (i = 0; i <= 9; i++){
printf("%3d~%3d : ", i * 10, i * 10 + 9);
for (j = 0; j < bunpu[i]; j++)
putchar('*');
putchar('\n');
}
printf(" 100 : ");
for (j = 0; j < bunpu[10]; j++)
putchar('*');
putchar('\n');
return 0;
}
*
* * * *
* * * * * * * * * *
------------------------------------------
0 10 20 30 40 50 60 70 80 90 100
のように表示できるように書き換える問題で
グラフの表示部分(ソースの32~44行目)を
puts("\n---分布グラフ---");
for (i = 10; i > 0; i--){
for (j = 0; j <= 10; j++){
if (bunpu[j] > 0)
printf(" * ");
else
printf(" ");
}
putchar('\n');
}
printf("---------------------------------\n");
printf(" 0 10 20 30 40 50 60 70 80 90 100\n");
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
-----------------------------------------
0 10 20 30 40 50 60 70 80 90 100
のようになってしまいました。
どのようにすれば見本のように表示させることができるのでしょうか?
お教え頂けると助かります。
ネットで調べてみると2次元配列を使って表示させる方法が出てきますが
書籍ではまだ多次元配列に入る前にこの演習問題が出てきています。