c言語の問題を解いてほしいです。 いくつかの架空の町の、名前・面積・人口が与えられている。町の情報を以下の構造体に格納するも のとする。 struct s_town { char tname[NLEN+1];//名前 int land;//面積 int popl;//人口 }; この構造体を要素とする配列としていくつかの町の情報が、struct s_town list[] = { {"honmati",33,22}, {"kishine",30,17}.......のように与えられている。 この配列の中で人口密度(人口を面積で割ったもの、小数点以下まで計算すること)が最大の町を探し、 その情報を実行例のように表示するプログラムを作成する。 なお、関数 cal_pd は、この構造体を引数として人口密度を返り値にする(この関数の中では printf を行なわず密度を返す)ように作り、関数 print_tinfo はこの構造体を引数として、面積・人口・人 口密度・名前を「land=XX popl=XX Pden=X.XX tname="XXXXXX"」の形(X は数字または名前を構 成する文字)で表示するように(人口密度は関数 cal_pd を呼び出して計算するように)作ること。 main では構造体の配列 list の各要素について cal_pd で人口密度を求め、人口密度が最大となる 町を見つけ、その町について print_tinfo を呼び出して表示する。関数 print_tinfo の中のみに printf を書き加えること。 ソースコードと実行結果を提出せよ。 ※部分の解説: #define Ntown を定義することで配列 list の要素数を設定できる。初期値で宣言 する町の数が増えても常に for(i=0; i<Ntown; i++) で配列 list の全要素を調べることができる。 作成するプログラムでは、特定の場合だけにしか使えない for(i=0; i<10; i++) の書き方ではなく、 for(i=0; i<Ntown; i++)のような汎用性のある書き方をすること。 実行例(一部、数値・名前は変えてある) $ ./a.out -- list -- land=34 popl=22 Pden=0.65 tname=’Honnmachi’ : : : -- max Pden -- land=XX popl=XX Pden=XX.XX tname=’XXXX サンプルコード #include <stdio.h> #define NLEN 14 #define Ntown (sizeof(list)/sizeof(struct s_town)) struct s_town { char tname[NLEN + 1]; int land, popl; }; double cal_pd(struct s_town t) { //ここを完成させる、密度を計算して返す(この関数の中にprintfを書かないこと) } void print_tinfo(struct s_town t) { //ここを完成させる、人口密度の計算にはcal_pdを使うこと // land=XX popl=XX Pden=X.XX tname=’XXXXXX’ の形式で出力 } int main(void) { struct s_town list[] = { {"Kishine", 31, 17}, {"Kosugi", 41, 18}, {"Honnmachi", 34, 22}, {"Kouen", 14, 11}, {"Musashi", 14, 89}, {"Fujisawa", 28, 35}, {"Kouza", 52, 12}, {"Sagami", 16, 85}, {"Oohara", 37, 13}, {"Ootsuka", 40, 53}, {"Shibuya", 21, 67}, {"Uehara", 34, 15}, {"Yoyogi", 19, 60}, {"Dai", 10, 10} }; //ここを完成させる(人口密度が最大の町を求め表示する。変数宣言を含めてよい) printf("-- max Pden --¥n"); print_tinfo( /*ここを埋める*/ ); return 0; }