平成19年 秋期 基本情報技術者 午後 問10
問10 C言語次の C プログラムの説明及びプログラムを読んで,設問1,2に答えよ。 〔プログラムの説明〕 関数 calc_carriage は,直方体の配送物の配送種別及び配送料金を求めるプログラムである。
(1) 関数 calc_carriage の引数は,次のとおりである。 (2) 配送種別は,配送物の重量及び大きさから,1, 2, 3, -1, -2 のいずれか一つの値に定まる。 配送種別が -1 又は -2 の配送物は,受け付けない。 (3) 配送料金は,配送種別ごとに用意された計算式によって求められる。 〔プログラム〕 #define NUM1 3 #define NUM2 4 #define NUM3 3 /* 各重量範囲での上限重量(規定サイズ内) */ const int Weight_tbl1[NUM1] = {25, 60, 100}, Price_tbl[NUM1] = {50, 80, 150}; /* 各重量範囲での上限重量(規定サイズ外) */ const int Weight_tbl2[NUM2] = {50, 100, 500, 1000}; const int Size_tbl [NUM3] = {60, 100, 150}, Mag_tbl [NUM3] = {1, 3, 4}; const int Min_size = 20, Max_size = 40, Max_weight = 10000; const int Unit_price = 2, Base_price = 600, Ext_price = 100; void calc_carriage(int, int, int, int *, int *); void calc_carriage(int weight, int size, int dist_mode, int *class, int *price){ int i; if(weight <= Weight_tbl2[NUM2 - 1]){ if((size >= Min_size) && (size <= Max_size) && (weight <= Weight_tbl1[NUM1 - 1])){ *class = 1; for(i = 0; weight > Weight_tbl1[i]; i++); *price = Price_tbl[i]; }else{ *class = 2; for(i = 0; weight > Weight_tbl2[i]; i++); *price = Weight_tbl2[i] * Unit_price; } }else if(weight <= Max_weight){ if(size <= Size_tbl[NUM3 - 1]){ *class = 3; for(i = 0; size > Size_tbl[i]; i++); *price = (Base_price + dist_mode * Ext_price) * Mag_tbl[i]; }else{ *class = -1; *price = 0; } }else{ *class = -2; *price = 0; } } 設問1 重量が 1,000 グラム( Weight_tbl2[NUM2 - 1] )を超えて 10,000 グラム ( Max_weight )以下の配送物の配送料金は表のとおりになる。表中の に 入れる正しい答えを,解答群の中から選べ。
注 網掛けの部分は,表示していない。
設問2 配送種別及び配送料金に関する次の記述中の に入れる正しい答えを, 解答群の中から選べ。 (1) 重量 600 グラム,大きさ 180cm の配送物を送る場合, 配送種別は となる。 (2) 重量 3,000 グラム,大きさ 180cm の配送物を送る場合, 配送種別は となる。 (3) 重量 12,000 グラム,大きさ 180cm の配送物を送る場合, 配送種別は となる。 (4) 重量 80 グラム,大きさ 30cm の配送物を中距離の場所に送る場合, 配送料金は 円となる。 (5) 重量 400 グラム,大きさ 30cm の配送物を中距離の場所に送る場合, 配送料金は 円となる。 b〜d に関する解答群 e,f に関する解答群 エ 500 オ 1,000 カ 2,000
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
|