前提
ここに質問の内容を詳しく書いてください。
(例)
C言語で構造体を用いたプログラムの作り方が分からないので教えていただきたいです。
表示するもの
・名称(char型配列)
・経度(double型配列)
・緯度(double型配列)
・その観光地から最も近い観光地の名称(char型配列)
(自作関数FindClosestLandmarkを用います)
・その観光地から最も近い観光地までの測地距離(double型配列)
(自作関数Cal_GeoDisを用います)
名称、緯度、経度に関しては与えられたファイルから値を読み込み、それ以外の2つは計算によって求めるそうです。
実行結果にはそれぞれの観光地に最も近い観光地の名称とそこまでの測地距離が表示されます。
また、実行の際はnを入力することで、n個のの情報を表示する仕組みになっています。
例えば、n=4を入力した場合、上からAsama_Mountain, Shibuya_Park, Ueno_Zoo, Asakusa_Shrineに関する前述した情報(名称、緯度、経度、最寄りの観光地、その観光地までの測地距離)を表示します。(自作関数 ShowLandmarkInfoを用いる)
プログラムの根幹となる部分はできているので、括弧にコードを埋めて完成させていただけると嬉しいです。
以下に測地距離の計算式を載せておきます。
地点Aの経度をx1、緯度をy1、地点Bの経度をx2、緯度をy2としたとき、
測地距離=6378.137arccos(siny1siny2+cosy1cosy2cos(x2-x1))
読み込むファイル、そしてプログラムの実行例、プログラムの根幹部分は以下に載せます。
なお、lngは経度、latは緯度を表しています。
与えられたファイル
Asama_Mountain 4.2 Mountain 141.3223033 43.0222 120
Shibuya_Park 4.1 Park 141.3449317 43.0596298 60
Ueno_Zoo 4.2 Zoo 141.3073929 43.051444 120
Asakusa_Shrine 4.2 Shrine 141.3076277 43.0542789 60
Hibiya_Park 4.1 Theme_Park 141.2710445 43.0890413 120
Roppongi_Garden 4.2 Garden 141.3435425 43.0753414 60
Tokyo_Tower 3.9 Observation 141.3564228 43.0610936 60
(左から名称、観光地の評価点(使わない)、建物のジャンル、経度、緯度、必要な時間(使わない))
n=1のときの表示例を以下に示しておきます。
The closest landmark of Asama_Mountain is Enzan Zoo. the shortest distance is・・・. [km]
The closest landmark of Shibuya_Park is・・・. the shortest distance is ・・・.[km]
The closest landmark of Ueno_Zoo is・・・. the shortest distance is ・・・.[km]
The closest landmark of Asakusa_Shrine is・・・. the shortest distance is ・・・.[km]
The closest landmark of Hibiya_Park is・・・. the shortest distance is ・・・.[km]
The closest landmark of Roppongi_Garden is・・・. the shortest distance is ・・・.[km]
The closest landmark of Tokyo_Tower is・・・. the shortest distance is ・・・.[km]
For more details, please input n:1
Asama_Mountain, lng:41.3223033, lat:43.0222, closest:Ueno_Zoo, shortest_dis:・・・
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
#include <stdio.h> #include <math.h> #include <stdlib.h> #include <string.h> #define LOCAL_PI 3.1415926535897932385 struct landmark { char name[7]; int }; double Toradians( ) { } double Cal_GeoDis( ) { } void ShowLandmarkInfo( ) { } int main(void) { FILE* fp; fp = fopen("landmark_Tokyo_txt", "w"); if(fp == NULL){ printf("Open error\n"); exit(1); } fclose(fp); FindClosestLandmark( ); printf("\nFor more details, please input n:"); scanf( ); ShowLandmarkInfo( ); return 0; }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
0 コメント