三角形の頂点の座標を入力し重心と内心と外心と垂心とジェルゴンヌ点とナーゲル点と類似重心の座標を出力するプログラムをCで書け。ただし、以下のようにファイルを分割すること。
input.c |
点の座標の入力 |
output.c |
点の座標の出力 |
calc_G.c |
重心の座標の計算 |
calc_I.c |
内心の座標の計算 |
calc_O.c |
外心の座標の計算 |
calc_H.c |
垂心の座標の計算 |
calc_Ge.c |
ジェルゴンヌ点の座標の計算 |
calc_Na.c |
ナーゲル点の座標の計算 |
calc_K.c |
類似重心の座標の計算 |
main.c |
入力・計算・出力を順に呼び出す |
| ヘッダファイル |
(必要に応じて) |
| その他のソースファイル |
(共通の下請け関数などのために必要ならば) |
-
重心、内心、外心、垂心、ジェルゴンヌ点、ナーゲル点、類似重心を出力する一つのプログラムを書け。
-
重心、内心、外心、垂心、ジェルゴンヌ点、ナーゲル点、類似重心のそれぞれについて、それだけを出力するプログラムを、あわせて7個書け。
- ヒント1
-
プログラムが7個なので素朴に実装すると
main関数を定義するファイルが7個必要になりますが、そのファイルの名前はmain.cと指定されているので、同じディレクトリに7個作ることはできません。対策としては、たとえば、次のようなものがあります。(他にもあります)
- (削除)
- マクロ定義を活用して、一つの
main.cから7個の.oが作れるようにする。(参考プログラムをダウンロード)
- 心の計算を行う関数を定義する7個のファイルで、計算を行う関数が同名となるように定義する。(参考プログラムをダウンロード)
- ヒント2
-
それぞれの心について、以下の手順を実行する関数を書くとよいでしょう。
-
三角形の頂点の座標
, ,
とする。
-
辺
,
,
の長さ
,
,
を
で計算する。
-
, ,
を計算する。
ただし、
は心ごとに決まっている関数で、「三角形の心」に書かれている。
-
心の座標
を
で計算する。
- ヒント3
- 参考データ