アルゴリズムとプログラミング

基本情報技術者試験 科目A免除 修了試験 20140622 実施分 問7

要素番号が 0 から始まる配列 TANGO がある。n個の単語が TANGO[1] から TANGO[n] に入っている。図は,n番目の単語を TANGO[1] に移動するために,TANGO[1] から TANGO[n−1] の単語を順に一つずつ後ろにずらして単語表を再構成する流れ図である。a に入れる処理として,適切なものはどれか。
流れ図(上から順): 開始 → [TANGO[n] → TANGO[0]] → ループ(条件 i : n−1, −1, 0) → [a] → ループ端 → 終了 (注)ループにおける条件は,変数名:初期値,増分,終値を示す。
  • ア TANGO[i] → TANGO[i+1]
  • イ TANGO[i] → TANGO[n−i]
  • ウ TANGO[i+1] → TANGO[n−i]
  • エ TANGO[n−i] → TANGO[i]

出典:基本情報技術者試験 科目A免除 修了試験 20140622 実施分 問7

答えと解説を見る

正解:ア

覚える知識

配列要素のシフト(ずらし)処理の流れ図読解

配列要素を後ろへずらすときは、末尾側から順に移すことで上書きを避ける。

この問題で必要なこと

最後尾から先頭へ向けて i=n−1,n−2,…,1 と減らしながら TANGO[i]をTANGO[i+1]へ移す。後ろから処理しないと値が上書きされる。

ひっかけ

イ・ウ・エのように添字をn−iと取り違えると、ずらす向きや対象が狂う。

この知識の出題:本試験系 1 回・免除試験 6 回(公開問題での観測値)

この知識をアプリで解いて覚える レッスン「配列の添字操作と表計算の参照」で学ぶ

同じ知識の過去問