![]()
平成25年 春期 基本情報技術者 午後 問08
問08 必須問題次のプログラムの説明及びプログラムを読んで,設問1,2に答えよ。 ある食料品店では,従来の特売方法に加えて,新たに選択型特売を始めることになった。 選択型特売とは,例えば3種類の商品中から合計3個(3商品を各1個,同一商品を3個など)を 選択して購入すれば値引きをするという特売方法である。 このプログラムは,レジ用プログラムの一部として,選択型特売の値引き処理をする。 プログラムの実行は,顧客がレジに持ち込んだ商品のバーコードを全て読み込んで, 購入する商品が確定した時点で行うものとする。 〔プログラムの説明〕 (1) 顧客がレジに持ち込んだ商品の情報(以下,購入情報という)及び1種類の選択型特売に ついての商品の情報(以下,特売情報という)は,次のように宣言された大域の 変数及び配列で他のレジ用プログラムと受け渡す。配列の添字は,1から始まる。 ![]() (2) 購入情報の内容は,次のとおりである。図1は,購入情報のデータ例である。
A 購入[] には,購入する商品の情報が,バーコードを読み込んだ順に添字1の 要素から格納されている。同一品番の商品の情報は,1レコードにまとめられており, 品番の重複はない。 B 購入[] 中の ptr は,レコードを品番の昇順にたどるポインタであり, 次に大きい品番をもつレコードが格納されている要素の添字が入っている。 最も大きい品番をもつレコードの ptr 値は0である。 C ptr 起点 は,最も小さい品番をもつレコードが格納されている 購入[] の 要素の添字を示す。 D 購入行数 は,購入[] 中に格納されたレコード件数を示す。 (3) 特売情報の内容は,次のとおりである。
A 対象[] は,品番,数量 のメンバから成る1レコードを1要素とする構造型の 配列である。品番 には,特売対象の商品の品番が格納されている。対象[] には, 要素が品番の昇順に添字1から格納されている。 B 対象行数 は,対象[] 中に格納されたレコード件数を示す。 C 指定数量 は,特売対象の商品を合計何個購入する必要があるかを示す。 D 対象[] 中及び 特売 中の 数量 には, 初期値0が格納されている。 E 図2には,特売情報のデータ例として,次の特売例を示してある。
500 ml(品番 224)のどれでも,合わせて3本の買上げごとに 100 円引きとする。
図1 購入情報のデータ例
図2 特売情報のデータ例 (4) 処理は,検索部,計算部,更新部から成り,この順に実行する。 A 計算部では,対象[] 中の各 数量 の値の合計を 指定数量 で割った商を, 特売 中の 数量 に格納する。 B 更新部では,特売 中の 数量 の値が1以上であれば,購入[] に 特売 の レコードを追加し,購入情報を更新する。 (5) メンバの参照は,例えば,購入[3] の 品番 を参照するときは,購入[3] .品番 と 記述する。 (6) 図1及び図2のデータ例を用いてプログラムを実行した結果は,図3及び図4のとおりである。 図3及び図4中の網掛け部分は,実行によって内容が変更された箇所であることを示す。 ![]() 図3 図1の購入情報のデータ例(実行後)
図4 図2の特売情報のデータ例(実行後) [プログラム]
設問1 プログラム中の a,b に関する解答群 ウ K ← 購入[K].ptr エ T ← 1 オ T ← T + 1 c,d に関する解答群 ウ 購入[K] .ptr エ 購入[Kp].ptr オ 購入[購入行数] .ptr 力 購入行数
設問2 次の記述中の ![]() 商品のバーコードを読み込む段階で,その時点までに読み込んだ商品の金額の小計を, 値引きを反映した金額で表示したい。そこで,商品のバーコードを読み込んだときに 選択型特売に該当する商品ならば,都度このプログラムを実行するように修正したい。 また,読込み済み商品の購入の取消しにも対応したい。ここで,対象[] 中及び 特売 中の 数量 には,初期値0を格納してプログラムを呼び出す。 この方法では,特売 のレコードを 購入[] に書き込むとき,既に 購入[] 中に その 特売 のレコードが存在していることがある。また,値引きが成立していた 特売 の レコード中の 数量 が0になったとき,その 特売 のレコードの削除が必要になることがある。 特売 のレコードの取扱いは,表1に示す処理に分けられる。
処理@〜Cのうち, そこで,プログラムの修正方法として,検索部と計算部は変更せず,更新部を 次のように変更することにした。
(1) プログラムの中の
![]() (2) プログラムの末尾に,次の処理を追加する。 ![]() なお,更新処理では,更新前と更新後の 特売 のレコード中の 数量 が同じになる場合でも 処理を行う。また,削除処理では,該当する 特売 のレコードを格納していた配列の要素は そのまま残し,ポインタの付替えによってレコードを無効にする。 e,f に関する解答群 ウ 処理B エ 処理C g に関する解答群 ウ 購入[K].ptr エ 購入[Kp].ptr オ 購入[購入行数].ptr 力 購入行数
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| |||||||||