上と同様の struct point を使って, こんどは二つの点の中間の点を求める関数を作ろう. 中間点もx,y座標の組だからつまり struct point という構造体になる. つまり, 二つの点のほかに, 第三の点が登場する.
この第三の点の構造体も, 関数の呼び側で用意してやることにして, そのなかみ(メンバ x と y) をp1, p2 の中間点の座標に設定する. 以下のようなかっこうの関数定義としよう.
void mid(struct point *p1, struct point *p2, struct point *p){
......
}
演習問題(1)と違って, こんどはポインタを使わないといけない.
その理由は, 中間点の値を設定するためには,
関数の呼び側にある構造体のなかみを変更する必要があるからである.
テスト用のmainプログラムはだいたい上のでよいだろう. ただし, 関数 mid を呼び出すところは
struct point point_a = {1.0, 2.0};
struct point point_b = {4.0, 6.0};
struct point point_c;
のように第三の点 point_c を宣言しておいて,
と関数midを呼び出す. これで point_c は point_a と point_b の中間点になる.mid(&point_a, &point_b, &point_c);
解答例のプログラム (説明の時になったら見えるようになります)