cd c を実行した後で( ~/c に移動した後で )、以下の課題を
やってみよ。
平面上の点をあらわす構造体 Point を用いて、 三角形の 3 つの頂点座標をメンバーに持つ構造体 Triangle を 以下のように定義した。
struct Point {
float x;
float y;
};
struct Triangle {
struct Point a, b, c;
};
この定義を用いて、構造体 Triangle 型の変数 tri を宣言し、
3 頂点が
になるように初期化するプログラムを作り、
頂点座標を次のように出力せよ。
三角形の頂点
( 1.0, 1.0),
( 5.0, 3.0),
( 4.0, 2.0)
実際には、実数で出力すると値がもう少し長くなるが、それは気にしなくて良い。
課題 20.1 を用いて、三角形の面積を計算するプログラムを作成せよ。
但し、三角形の面積
は、
3 つの頂点の座標を
とした場合、次の式で計算される。
頂点は、課題 21.1 で初期化した値を用いよ。
また、上の式では絶対値の記号 | | を用いているが、
面積は正になるように if 文を用いてプログラムすれば良い。
課題 21.2 を用いて、三角形の面積を計算する関数を作成せよ。但し、 関数の引数は構造体 Triangle へのポインタであるとし、関数の 返値は三角形の面積である。
struct Point {
float x;
float y;
};
struct Triangle {
struct Point a, b, c;
};
/* 関数宣言をここに */
main(){
struct Triangle tri = { ... }; /* 課題 20.2 と同じ */
float s;
s = menseki( &tri );
cout << "面積は " << s << endl;
}
... menseki(....){ /* 関数の型宣言、引数に注意せよ */
....
}
作成したプログラムをメイルで creport まで送りなさい。題は、kadai21 とする事。
[構造体変数].[メンバー名].[メンバー名]
struct Point { float x, y; };
struct Line { struct Point a, b; };
struct Line l = { {0.0, 0.0}, {2.0, 2.0} };
構造体の中に配列が含まれる場合も同様である。