総合演習2-A


問題1.

与えられたデータに従って、横置きの棒グラフを出力するプログラムを作ろう。
たとえば、{1, 3, 8, 15, 12, 4, 2} という7個のデータが与えられたとき、次のようなグラフを出力する。

  1 :*
  3 :***
  8 :********
  15 :***************
  12 :************
  4 :****
  2 :**

グラフの左側には入力されたデータを表示し、その右側にはコロン「:」をひとつ置いて、アスタリスク「*」をデータの個数分だけ出力する。

与えられたデータ10個を、{2, 5, 8, 12, 17, 8, 15, 6, 3, 1} として、棒グラフを出力するプログラムを作りなさい。

そのとき、「*」を個数分だけ出力する部分は「関数」として定義してプログラムを作りなさい。

 

(補足) このプログラムのように、関数内で画面表示するだけで関数側から呼び出し元に戻り値を返さない場合はユーザ関数の戻り値の型を「void」と記述します。

例>

#include<stdio.h>

/* プロトタイプ宣言 */
void func(int);

int main(){

  // 戻り値無しの関数呼び出し
  func(2018);

}

void func(int year){
  printf("今年は%d年です。\n",year);

  // 戻り値がないので、return文は引数を書かない
  return;
}


 

問題2.

上のプログラムに手を加えて、累積グラフを作る。累積グラフは、各データとそれ以前のデータの合計を値として描く。上の例では、累積の値は、1, 4(1+3), 12(4+8), 27(12+15), 39(27+12), 43(39+4), 45(43+2)、となる。

グラフは次のようになる。

  1 :*
  4 :****
  12 :************
  27 :***************************
  39 :***************************************
  43 :*******************************************
  45 :*********************************************

「問題1.」と同じデータを与えられたとして、累積グラフを出力するプログラムを作りなさい。