[問1] 前回と同様に国語と数学の2科目のテストの成績を処理するプログラムを作る。今回はそれぞれの科目の期末テストが合格か否かを判定したい。つまり前回の構造体に合格かどうかを格納する変数も必要だ。そのため、対応する名前のメンバーを構造体に増やす必要がある。しかし、メンバーが増えすぎると構造体が煩雑になって見た目にわかりにくくなることは否めない。そこで、今回はもっとスマートな汎用性の高いデータ構造の構築を目指そう。すなわち、構造体をもう1つ用意して
struct each_score {
??? ???; //点数
??? ???; //合格・不合格
};
struct SEISEKI {
char name[50];
struct each_score kokugo;
struct each_score sugaku;
};
としてみよう。見た目にはstruct SEISEKIのメンバーの数には変わりがないことが分かるだろうか。
しかし、そのメンバーの型がstruct each_scoreとなっていて、それぞれが点数のみならず、合格・不合格の情報を格納できるというわけである。
struct each_score の「??? ???」部分を補った上で、それぞれの成績がborderlineで表される成績を上回っているか否かを判定し、合格・不合格を表すメンバーに1(合格の意味)もしくは0(不合格の意味)の値を代入して3人の学生の合否データを含めた記録を作ろう。3人の成績データを格納するデータ構造は、配列を利用して次のように定義できる。
struct SEISEKI score[3];
ついては、各人の成績データから合否判定をして合格・不合格情報をデータ構造に書きこむ関数
void check_score(int borderline, struct SEISEKI *a) /* 引数aの前に'*'が付いていることに注意されたい */
を定義して、その動作を確認する(すべての人の成績を入力し、データ構造に書きこみ、合否判定をして全結果を表示する)プログラムkadai8-1.cを作りなさい。
但し、ボーダーラインは60点とする。(必ず上記の型通りのcheck_scoreを定義し、引数borderlineを使用するようにプログラムを書きなさい)
また、結果の表示を行うために、前回の課題同様に表示用の関数
void print_score(struct SEISEKI a);
を作りなおして、使用するように。今回は合格・不合格も表示する。
ただし、答えの入力は前回と全く同じで、
ex. 入力例:
yamauchi 60 70 yamada 30 90 tougou 70 80
表示はつぎのフォーマットで行うようにせよ。
最終出力の例:
name: yamauchi
kokugo 60 : accept
sugaku 70 : accept
name: yamada
kokugo 30 : rejection
sugaku 90 : accept
name: tougou
kokugo 70 : accept
sugaku 80 : accept