構造体の配列
構造体を利用して、惑星の名称と、その惑星が太陽の周りを軌道する長半径や 傾斜角度などの軌道要素を設定して表示させてみたいと思います。 構造体を定義した後、その構造体を配列として定義することにより、 複数のデータ(惑星とその軌道要素)をまとまりとして、同時に扱えるので、 とても便利です。このプログラムでは、さらに、関数の引数ポインタも利用しています。
これらのプログラムの応用として惑星の軌道に関する値を構造体化し 各惑星ごとにその要素を設定し、ケプラーの軌道方程式を利用して 惑星の軌道の推定位置を求めるプログラムが作れると思います。
#include <stdio.h> typedef struct { char *planetnm; /* 惑星の名称 */ double a; /* 長半径 */ double incln; /* 軌道傾斜角 */ int dist; /* 太陽からの距離 */ double revol; /* 公転周期 */ } planet; void planet_set(planet* ); /* 惑星の軌道要素の設定関数プロトタイプ宣言 */ void planet_out(planet* ); /* 惑星の軌道要素の表示関数プロトタイプ宣言 */ int main(void ) { planet plt1[5]; /* 構造体の変数定義 */ planet_set(plt1 ); /*惑星の軌道要素の設定 */ planet_out(plt1 ); /* 惑星の軌道要素の表示 */ return 0; } |
この画面での表示は、構造体の定義と、関数のプロトタイプ宣言、それから、 メイン関数しか載せていませんが、下のサンプルソースには、惑星軌道の設定と 表示の関数の定義全てのリストがありますので、ダウンロードしてみてください。