フローチャート 2
フローチャート1 | フローチャート3
・今回は配列(テーブル)について勉強しましょう。

ある学校に26人のクラスがあります。テストの得点のクラス合計を求める場合、26人の個々の変数(A,B,C,・・・)に得点を入れておくと以下のフローになります。

それぞれの生徒がそれぞれの変数を持ち、フローの中でも人数分変数を記述する必要が発生し、それぞれの変数に対する処理が発生します。これでは大変ですね。 そこで生徒一人一人の変数を用意するのではなく、クラス全体に名前をつける方法があります。これを配列またはテーブルと呼びます。

CLASS配列(またはCLASSテーブル)を使うと生徒個別の変数を使わず、配列名を使って個々の生徒を表現(配列名[添字])できます。C言語の場合、添え字は0から(1からではなく)始まります。また配列名による表現は式の左辺でも右辺でも使えます。

例1.上田の点数をXに代入しなさい。
配列使用生徒別変数仕様
X=CLASS[2]X=C
例2.川上に100点を代入しなさい。
配列使用生徒別変数仕様
CLASS[4]=100E=100
例1,例2では添字(INDEXともいいます)に定数(2、4等)を使用していますが、変数を使用することもできます。
例3.座席NO(SEKI)に入っている生徒の点をTENに代入しなさい。
IDX=SEKI-1
TEN=CLASS[IDX](または TEN=CLASS[SEKI-1])
例題5 クラスの点数合計をTTLに計算しなさい。
  
例題6 クラスの点数(TEN)テーブルと性(SEI)テーブルを使って
男女別にMTTL(男合計)、WTTL(女合計)を計算しなさい。
  • 点数テーブルは座席NOに対応した生徒の得点、性テーブルは座席NOに対応した生徒の性別(0が女、1が男)をもつテーブルです。
  • 分岐はAと0を比較し、A > 0なら下のX = Aを実行し終了、A ≦ 0なら右のX = 0 - Aを実行し終了します。
  
  
以下フローチャートの演習問題です。
8.上記CLASS配列の中から最大得点の点をMAXに、その座席NOをMAXSEKIに
 セットしなさい。(同一得点は前の点を対象とします。)
9.最小得点について演習8)と同様
10.CLASS配列の平均点を求めなさい。(割り算(/)使用可)
11.CLASS配列自身を点の小さい順に並べ替えなさい。(昇順ソートといいます。)
12.CLASS配列自身を点の大きい順に並べ替えなさい。(降順ソートといいます。)
13.CLASS1とCLASS2の2つのテーブルはそれぞれ昇順ソートされています。
 CLASS3に点の小さい順にセットしなさい。下図参照してください。
 (マージソートといいます。)
 
フローチャート1 | フローチャート3