問題
次の擬似言語プログラムで、配列 data の要素の逆順を得るための空欄(A)に入れるべき式はどれか。 整数型の配列: data ← {1, 2, 3, 4, 5} 整数型の配列: result ← {0, 0, 0, 0, 0} 整数型: i ← 1 while (i ≦ 5) result[(A)] ← data[i] i ← i + 1 endwhile
選択肢
- 1ア i
- 2イ i + 1
- 3ウ 5 - i
- 4エ 6 - i
正解
4. エ 6 - i
詳しい解説を見る解説を閉じる
解説
逆順コピーでは、data[1]→result[5]、data[2]→result[4]、data[3]→result[3]、data[4]→result[2]、data[5]→result[1] と対応させる必要がある。コピー元の添字iとコピー先の添字の和が常に 1+5=6、2+4=6 のように6で一定であることに着目すると、コピー先は 6 - i と表せる。i=1のとき6-1=5、i=5のとき6-5=1となって正しく逆順になるため、エが正解である。ウの 5 - i ではi=1のとき4となって1つずれ、i=5のとき0で添字の範囲外となる。アのiでは単なる同順コピー、イの i + 1 では1つ後ろにずれi=5で範囲外アクセスが起こる。要素数nの配列の逆順は「(n+1) - i」という一般形で覚えておくと、端の値(i=1とi=n)を代入して検算する習慣とあわせて確実に解ける。
一問一答
科目A 180問+科目B 60問