平成17年 春期 基本情報技術者 午後 問10
問10 C言語次の C プログラムの説明及びプログラムを読んで,設問1,2に答えよ。
〔プログラムの説明〕 関数 make_fare_table は,ある鉄道路線における始発駅から終着駅までの隣接駅間の 距離から,その鉄道路線上の全駅間の運賃を求め,運賃表を作成するプログラムである。 (1) 関数 make_fare_table の引数は,次のとおりである。 num 始発駅から終着駅までの駅数
fare_table[m][n](0 ≦ m ≦ num − 1,0 ≦ n ≦ num − 1
図1 引数 num と dist_list の関係 (2) 距離から運賃を求めるために,関数 calc_fare を用いる。 dist 2駅間の距離(km)
(3) 2駅間を幾つかの区間に分け,区間ごとに計算した運賃を合計したものを, 2 駅間の運賃とする。 (4) 各区間の運賃は,次の @ 〜 C のとおりである(図2参照)。 @ 最初の 20 km 以下の区間(区間[0])の運賃は,5 km 増えるごとに 100 円加算する。 A 20 km を超え 100 km 以下の区間(区間[1])の運賃は,10 km 増えるごとに 180 円加算する。 B 100 km を超え 500 km 以下の区間(区間[2])の運賃は,50 km 増えるごとに 850 円加算する。 C 500 km を超える区間(区間[3])の運賃は,100 km 増えるごとに 1,650 円加算する。
図2 2駅間の距離と運賃の関係
(5) 例えば,距離が 385 km ある駅間の運賃の求め方は,次のとおりである。 @ 最初の 20 km 以下の区間(区間 [0])の運賃は,5 km 増えるごとに 100 円加算されるので,次の式で求められる。 100 円×ceil(20 km÷5 km)=400 円 A 20 km を超え 100 km 以下の区間(区間 [1])の運賃は,10 km 増えるごとに 180 円加算されるので,次の式で求められる。 180 円×ceil((100 km−20 km)÷10 km)=1,440 円 B 100 km を超え 385 km 以下の区間(区間 [2])の運賃は,50 km 増えるごとに 850 円加算されるので,次の式で求められる。 850 円×ceil((385 km−100 km)÷50 km)=5,100 円 運賃は,@ 〜 B の合計で,6,940 円になる。 ここで,計算式中の ceil(X) は,X の小数点以下を切り上げた値を表す。 (6) 各区間の上限距離と単位距離は,距離運賃体系表で与える。 距離運賃体系表は,上限距離の小さい区間から順に各要素を格納する。 最後の要素の上限距離はゼロを格納し,距離の上限がないことを表す。
表 距離運賃体系表
(7) 各区間の上限距離,単位距離及び単位距離ごとの運賃は,次に示す構造体 COSTUNIT で定義される。
〔プログラム〕 #include
設問1 プログラム中の に入れる正しい答えを,解答群の中から選べ。
a に関する解答群 ア dist += dist_list[idx0] イ dist += dist_list[idx0 - 1] ウ dist += dist_list[idx1] エ dist += dist_list[idx1 - 1] オ dist = dist_list[idx0] カ dist = dist_list[idx0 - 1] キ dist = dist_list[idx1] ク dist = dist_list[idx1 - 1] b に関する解答群 ア upper_limit != 0 && dist > (double)lower_limit イ upper_limit != 0 && dist > (double)upper_limit ウ upper_limit != 0 || dist > (double)lower_limit エ upper_limit != 0 || dist > (double)upper_limit オ upper_limit == 0 && dist <= (double)lower_limit カ upper_limit == 0 && dist <= (double)upper_limit キ upper_limit == 0 || dist <= (double)lower_limit ク upper_limit == 0 || dist <= (double)upper_limit c,e に関する解答群 ア ((double)upper_limit - dist) イ (dist - (double)lower_limit) ウ (double)(upper_limit - lower_limit) エ (double)lower_limit オ (double)upper_limit カ dist d に関する解答群 ア ++idx イ --idx ウ idx エ idx++ オ idx-- カ idx + 1 キ idx - 1
設問2 次の記述中の に入れる正しい答えを,解答群の中から選べ。
鉄道路線の運営会社が,始発駅及び終着駅以外の途中駅を境に2社に分割され, 運賃の計算方法が次のように変更された。 (1) どちらか1社の鉄道路線だけを利用する場合は,従来どおりの方法で運賃を計算する。 (2) 2社の鉄道路線を乗り継いで利用する場合は,各社の利用部分の運賃を個別に計算し, それを合計する。 これに対応するためには,関数 make_fare_table の引数に,境となる駅の番号 if (idx0 < term_no && idx1 > term_no) fare_table[idx0][idx1] = fare_table[idx1][idx0] = calc_fare(dist, cost_list) + fare_table[idx0][term_no]; else fare_table[idx0][idx1] = fare_table[idx1][idx0] = calc_fare(dist, cost_list); if () dist = 0.0; 解答群 ア idx0 == term_no - 1 イ idx0 == term_no ウ idx0 == term_no + 1 エ idx1 == term_no - 1 オ idx1 == term_no カ idx1 == term_no + 1 [←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||||||||||||||||||