平成6年度 秋期 第二種 午後 問9

                        [更新日]1994.11.01
問9 次のFORTRANのプログラムの説明及びプログラムを読んで、設問に答えよ。 [プログラムの説明] ある日の日本各地(東経x1度x2分,北緯y1度y2分)の日の出時刻は、東京(東 経139度45分,北緯35度39分)の日の出時刻を基にして、次の式で近似的に求める ことができる。 T=T0+0.067×Dx−0.017×Dy ここで、T0は東京の日の出時刻、Dxは東京との経度差(分単位)、Dyは東京との 緯度差(分単位)である。 プログラムは、この式を利用して日の出時刻を計算するものである。 (1) 東京の日の出時刻(午前5時48分)と経緯度は、プログラムではparameter文 によって変数名thh,tmm,及びtx1, tx2, ty1, ty2に与える。 (2) 日の出時刻を求める地点(最大100)の経緯度はその地名(12文字以内)ととも に入力し、chimei, x1, x2, y1, y2 に読み込まれる。図1は稚内(東経141度41 分,北緯45度25分)の入力例である。 /-------------------------------------- | wakkanai 141 41 45 25 | ---------------------------------------- 図1 稚内の入力例 (3) A式は次のようにして計算する。 [1] まず、東京の経緯度を分単位に変換する。プログラムでは関数副プログラム funを用いて計算し、txx,tyyに代入する。例えば経度(139度45分)の場合、 その値は次のように8385なる。 txx ← 139 × 60 + 45 (=8385 ) [2] [1]と同様に、日の出時刻を求める地点の経緯度(x1度x2分,y1度y2分)を分 単位に変換し、xx,yyに代入する。 [3] [1]と[2]の結果から、日の出時刻を計算するA式は、次のように表すことがで きる。 T=T0+0.067×(txx−xx)−0.017×(tyy−yy) (A'式) =T0+hosei          (A" 式) A'式の第2項以下は東京の日の出時刻T0(thh時tmm分)に対する分単位の 補正値である。プログラムでは、この補正値の小数点以下を四捨五入した値を 変数hoseiに代入する。 [4] A" 式の計算は、2けたの60進数の加算を行なうサブルーチン副プログラムjikan を用いる。この計算では、まず計算結果を分単位でwrkに求めてから、時分の値を 求める。 (4) 出力様式を図2に示す。 -------------------------------------------- | chimei = wakkanai 5ji 50fun | -------------------------------------------- 図2 出力様式 [プログラム] integer thh,tmm,tx1,tx2,ty1,ty2,txx,tyy integer hh,mm,x1,x2,y1,y2,xx,yy integer fun,hosei real xhosei,yhosei character*12 chimei parameter (xhosei=0.067,yhosei=-0.017) parameter (thh=5,tmm=48,tx1=139,tx2=45,ty1=35,ty2=39) txx = fun(tx1,tx2) tyy = fun(ty1,ty2) do n = 1,100 read(*,10,end=20) chimei,x1,x2,y1,y2 10 format(A,4I5) xx = fun(x1,x2) yy = fun(y1,y2) hosei = [ a ] call jikan(thh,tmm,0,hosei,hh,mm) print*," chimei = ",chimei,hh,"ji",mm,"fun" end do 20 end integer function fun(dd,ff) integer dd,ff fun = [ b ] end subroutine jikan(jj1,ff1,jj2,ff2,jj,ff) integer jj1,ff1,jj2,ff2,jj,ff,wrk wrk = (jj1 + jj2) * 60 + ff1 + ff2 ff = [ c ] jj = [ d ] end 設問 プログラム中の[ ]に入れる正しい答えを、解答群の中から選べ。 a に関する解答群 ア nint(xhosei * (txx - xx) + yhosei * (tyy - yy)) イ nint(xhosei * (xx - txx) + yhosei * (yy - tyy)) ウ nint(xhosei * (txx - tyy) + yhosei * (xx - yy)) エ xhosei * (txx - xx) + yhosei * (tyy - yy)) オ xhosei * (xx - txx) + yhosei * (yy - tyy)) カ xhosei * (txx - tyy) + yhosei * (xx - yy)) b に関する解答群 ア dd * 60 + ff イ dd / 60 + ff ウ dd + ff * 60 エ dd + ff / 60 c に関する解答群 ア wrk * 60 イ wrk / 60 ウ mod(wrk,60) エ mod(ff1+ff2,60) d に関する解答群 ア wrk * 60 イ wrk / 60 ウ wrk / 60 + 1 エ mod(wrk,60)
戻る 次頁:問10