ページ 11

縦方向グラフの表示について

Posted: 2014年9月07日(日) 12:22
by ゆうぼく
はじめまして、ゆうぼくと申します
最近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次元配列を使って表示させる方法が出てきますが
書籍ではまだ多次元配列に入る前にこの演習問題が出てきています。

Re: 縦方向グラフの表示について

Posted: 2014年9月07日(日) 12:56
by みけCAT
bunpu[j] > 0という条件を、bunpu[j] >= iに書き換えるといいかもしれません。

Re: 縦方向グラフの表示について

Posted: 2014年9月07日(日) 14:13
by ゆうぼく
みけCAT様
解決できました!ありがとうございます!