基本情報技術者試験のサンプル問題を解こう!(7)(科目B)「引数が配列である関数の処理」

スポンサーリンク
IT系

基本情報技術者試験のサンプル問題(科目B)を解いてみよう。

今回のテーマは、「引数が配列である関数の処理」である。

正解:カ

この問題は、与えられた配列に対して関数 makeNewArray を適用したときに、戻り値の配列の 5番目の要素が何になるかを問うものである。


与えられた配列

{3, 2, 1, 6, 5, 4}

※ 要素番号は 1から始まると問題文に明記されている。(←注意


関数 makeNewArray の処理内容を確認しよう!

  1. 初期化
    • out ← {}(空の配列)
    • out の末尾に in[1](= 3)を追加 → out = {3}(outの末尾に、引数で渡された整数型配列inの要素番号1の要素3を追加)
  2. ループ処理(i = 2 から in の要素数(=6)まで)(要素番号2からinの要素数6まで1ずつ増やす)
    各ステップでの処理は、
    • tail ← out[outの要素数](変数tailに、配列outの末尾の要素を代入)
    • out の末尾に (tail + in[i]) を追加する(outの末尾に、配列outの末尾の要素(tail)+引数の配列要素(in[i])の結果を追加)

処理をステップごとにトレースしよう!

初期状態

in = {3, 2, 1, 6, 5, 4}
out = {3}

i = 2

  • tail = 3
  • in[2] = 2
  • 3 + 2 = 5 → out = {3, 5}

i = 3

  • tail = 5
  • in[3] = 1
  • 5 + 1 = 6 → out = {3, 5, 6}

i = 4

  • tail = 6
  • in[4] = 6
  • 6 + 6 = 12 → out = {3, 5, 6, 12}

i = 5

  • tail = 12
  • in[5] = 5
  • 12 + 5 = 17 → out = {3, 5, 6, 12, 17}

i = 6

  • tail = 17
  • in[6] = 4
  • 17 + 4 = 21 → out = {3, 5, 6, 12, 17, 21}

戻り値の配列 out の要素番号 5 の値は 17 である。

コメント

タイトルとURLをコピーしました