平成28年度 春期 午前 問6
データ構造
配列に関する問題
2 次元の整数型配列 a の各要素 a(i, j) の値は,2i + j である。このとき,a(a(1, 1)×2, a(2, 2)+1) の値は幾つか。
- ア12
- イ13
- ウ18
- エ19
答えと解説を見る
✓ これが正解エ19
解説
内側から順に評価すると添字は6と7、結果は19です。
配列の添字に別の配列参照が使われているときは、内側の参照から順に値を求めて、外側の添字に置き換えていきます。設問の定義では、要素の値が2倍の第1添字と第2添字の和で決まると与えられています。内側で必要になるのは第1添字が1・第2添字が1の位置と、第1添字が2・第2添字が2の位置の2つで、それぞれ3と6です。ここから外側に上げると、第1添字は3の2倍で6、第2添字は6に1を足して7になります。最後にその位置の値を定義に当てはめると、2倍の6に7を加えた19が答えになります。判定の軸は、内側から順に置き換えていくことと、置き換えた値をそのまま次の添字として使うことの2つだけです。ここで扱っているのは、多次元配列の添字を評価する順序と、関数のように読み替えて計算する考え方です。
ほかの選択肢はなぜ違うのか
- ア12:答えが12だと述べています。この値は、内側で求めた3を2倍せずに第1添字へ置き、さらに第2添字にも1を足さずに6のまま置いた形、つまり2倍の3に6を加えた値に相当します。二つの手順がどちらも抜けていました。
- イ13:答えが13だと述べています。この値は、内側で求めた3を2倍せずにそのまま第1添字へ置き、第2添字のほうは7と正しく求めたときの、2倍の3に7を加えた形に相当します。第1添字を2倍する手順が抜けていました。
- ウ18:答えが18だと述べています。この値は、最外の第2添字を6のまま用いて、2倍の6に6を足した形に相当します。内側で求めた第2添字の6に1を足すという手順が飛ばされてしまいました。
出典:平成28年度 春期 基本情報技術者試験 午前 問6
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)