next up previous contents
Next: 20. 構造体 III Up: 19. 構造体 II Previous: 19.5 標準関数 strcpy(), sscanf()

19.6 課題 20

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

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

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

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

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

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

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

課題 19.3
構造体型の配列 I

例 10 を実行して見よ。

課題 19.4
構造体型の配列 II

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

kanayama 96 1 keijo 1 70 65 25
yamada 96 2 eijo 3 80 90 30
hokusei 96 3 keijo 2 80 60 15
suzuki 95 11 keijo 1 65 70 10

データは、前から順に、名前、入学年度、出席番号、学科、組、 前期成績、後期成績、出席回数の 7 個である。

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

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

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

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

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

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

構造体の配列

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

構造体の配列のメンバー

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

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



Noriyo Kanayama