next up previous contents
Next: 21. 構造体 III Up: 20. 構造体 II Previous: 20.6 複数の変数への読み込み

20.7 課題 20

cd c を実行した後で( ~/c に移動した後で )、以下の課題を やってみよ。

課題 20.1
ポインタと構造体 I

例 5 を入力し、実行してみよ。

課題 20.2
ポインタと構造体 II

課題 19.4 を元にして、入力部分の関数、出力部分の関数、メイン関数に プログラムを分けよ。その際に、入力部分の関数、出力部分の関数については、 引数は構造体へのポインタとなるようにせよ。すなわち、以下のようになって いること。

        void input(struct gakusei *p){
             ....
        }
        void output(struct gakusei *p){
             ....
        }

また、構造体 gakusei の名前などを格納する部分は、配列に変更して いること。

課題 20.3
構造体型の配列 I

例 10 を実行して見よ。

課題 20.4
構造体型の配列 II

課題 20.2 を改造し、一度に 100 人までの通年成績をつけられるようにせよ。 但し、課題 19.3 のように、構造体型の配列を使うと共に、データは、 次のようなものであるとする。

kanayama 2001 1 1 70 65 15 15
yamada 2001 2 3 80 90 10 13
hokusei 2001 3 2 80 60 13 12
suzuki 2000 11 1 65 70 12 15

データは、前から順に、名前、入学年度、出席番号、組、 前期総合成績、後期テストの成績、レポートの提出回数、出席回数の 8 個である。

出力は、名前、入学年度、番号、組、通年成績の順で、 1人1行の形式で出力するようにせよ。

作成したプログラムをメイルで creport まで送りなさい。題は、kadai20 とする事。

前回の復習
構造体へのポインタ

構造体へのポインタを定義することで、構造体のアドレスを保持 出来る。
	struct 構造体タグ名 * ポインタ変数名;

構造体ポインタのメンバー

構造体ポインタを用いて、構造体のメンバーにアクセスするには、
	(*構造体へのポインタ).構造体メンバー名
とすれば良いが、新たな演算子 -> が用意されており、
	構造体へのポインタ -> 構造体メンバー名
とすれば、先の書き方と同じ事ができるようになっている。

構造体の配列

構造体は型として扱われるので、配列の型としても考える事が出来る。
	struct 構造体タグ名 配列名[大きさ];
この場合、指定した大きさ分の数だけの構造体変数が確保される。

構造体の配列のメンバー

先のように確保された構造体の配列のメンバーへのアクセスは、 選択演算子を用いて次のようにすれば良い。

	配列名[添字].メンバー名



Noriyo Kanayama