基本情報技術者過去問題 平成23年秋期 午後問13 解説

問題文は他のサイトを別ウインドウで開いてご覧ください。

問題文の表にある数値を引数として、トレースします。

問題文の日本語が難しい

問題文には、

「本部に属する社員の賞与の合計(以下,本部賞与合計という)が,本部利益の15%の金額(以下,本部賞与合計上限という)以下となる条件を満足する1~20の整数があるときは,その最大値を本部加点とする。無いときは,本部加点を0とする。」

とありますが、意味わかるでしょうか?

あなただけでなく多くの人がわかりません。もちろん私も。
マクロをトレースすることでようやく「ああそういうことか」と気づくことができるので、とにかく読み進めるしかありません。

空欄f

空欄fにはループ条件がはいります。
第一本部、第二本部、第三本部と3回繰り返したいので、ループ回数が3回の選択肢を選べばいいだけです。

空欄fはウです。

DeptPoint の初期値を 0 に設定します。
DeptPoint ← 0

メインループ

ループ条件が後にあるタイプのループです。

まず DeptPoint をプラス1します。

相対(L1, row, 0) に DeptPoint をいれます。
L
1 本部加点
2 1

こうなりますよね。
すると次にどうなるでしょう?
ここが想像できないから問題文を読んだだけではピンとこないのです。
トレースしてみてようやく気付きます。

L2が上書きされるとすぐさま自動更新されて、L6~L112までの社員ごとの本部加点が上書きされます。
続いて、M6~M112までの社員ごと給与額も更新されます。
そしてさらに、M2の合計額が更新されます。

こうして自動で更新された M2 を、空欄 g で K2 と比較します。

「前者が後者を上回る、又は、本部加点が20を超えたとき」にループを抜けるようにしたいのですから、空欄 g はエとなります。

こうして、
L2 を 2 にして自動更新、比較。
L2 を 3 にして自動更新、比較。
L2 を 4 にして自動更新、比較。
と繰り返していき、
L2 を 21 にして自動更新、比較したときに条件が合わずループを抜けます。

空欄h

手順5に「このときの本部加点から1を減じた値を第1本部の本部加点とし,対応するセルに代入する。」とあるとおり、アルゴリズムの整合性を取るために、最終的に DeptPoint から 1 引いた数値を L2 に入力します。

空欄 h はウです。


ホームに戻るボタン↓