質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.13%

(縦向き棒グラフ)を作るとき、どのように書けばよいのか、分かりません。。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 4,942

bjbjeknr

score 26

試験の点数score[]の分布を求め,それを棒グラフ状に表示したいのですが、
点数は初期化子

int score[NUM]={3, 12, 46, 49, 17, 75, 50, 25, 69, 82, 41, 87, 54, 78, 64, 33, 46, 37, 52, 55, 54, 60, 41, 41, 35, 40, 62, 68, 60, 92};


として与えています。
横向きの棒グラフならかけると思うのですが、今回は次のような縦向きの棒グラフを書きたいのです。0-9,    10-19,    ...,    90-99 の範囲で集計する)

イメージ説明

このようなプログラム(縦向き棒グラフ)を作るとき、どのように書けばよいのか、分かりません。私のソースコードです。
ここまでは書けました。
これで実行してもうまくいきません。。
```C

include <stdio.h>

define NUM 30

define BUNPU 10

int main(void)
{
int score[NUM]={3, 12, 46, 49, 17, 75, 50, 25, 69, 82, 41, 87, 54, 78, 64, 33, 46, 37, 52, 55, 54, 60, 41, 41, 35, 40, 62, 68, 60, 92};

int dist[BUNPU]={0};
int i,j,k,total=0;
int dist_max=0;

if(score[NUM] > dist_max ){    /*度数の最大値を求める*/
dist_max = score[NUM];
}
for(i=0;i < NUM; i++){

total += score[i];
dist[score[i] /10]++;

for(j=30; j>0; j--){       /*最大値から1までをループ*/
for(k=0;k < BUNPU; k++){         /*更に0からBUNPU-1までループする*/
if(dist[k] >=j){           /*dist[j]がi以上なら'*'そうでないなら' 'を出力する。 */
printf("*");
}else{
printf(" ");
}
}
printf("\n");
}
}

return 0;
}

アドバイスをいただければ幸いです。お願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

こんにちは。

考え方を示します。

  1. 度数の最大値を求める
  2. その最大値から、1までをループする→i
  3. 更に0からBUNPU-1までをループする→j
  4. dist[j]がi以上なら'*'そうでないなら' 'を出力する。
  5. 3.のループが終わったら"\n"を出力する。

頑張って下さい。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/20 12:32

    途中まで修正しました。

    キャンセル

  • 2016/11/20 12:52

    何がどのようにうまくいかないのか書いて下さいね。
    それと折角度数の最大値dist_max を求めているのに使っていないようですよ。

    キャンセル

  • 2016/11/20 19:15

    解決しました。ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • トップ
  • Cに関する質問
  • (縦向き棒グラフ)を作るとき、どのように書けばよいのか、分かりません。。