基本情報技術者令和4年免除 問10

問10

正の整数Mに対して,次の二つの流れ図に示すアルゴリズムを実行したとき,結果xの値が等しくなるようにしたい。aに入れる条件として,適切なものはどれか。
10.png/image-size:455×296
  • n < M
  • n > M-1
  • n > M
  • n > M+1
  • [出典]
  • 午前免除試験 R4-6月 問10
  • 応用情報技術者 H22 問7と同題

分類

テクノロジ系 » アルゴリズムとプログラミング » アルゴリズム

正解

解説

2つのアルゴリズムで共通の M は正の整数という条件が問題文に示されているので、Mに適当な数値を当てはめることで解答を導いていきます。正の整数であれば何でもいいのですが、本解説では M に2を代入してみます。解き方としては、まず左のアルゴリズムを解き、その結果の x の値が右の式でも出力される条件はどれかを考えていくことになります。

[左の流れ図]
  1. 《開始》
  2. 1 → x //x=1
  3. 《ループ条件》n:2、増分 -1、n=1で終了
  4. (n=2)1×2 → x //x=2
  5. (n=1)ループから抜ける
  6. 《終了》//x=2
[右の流れ図:aの直前まで]
  1. 《開始》
  2. 1 → x //x=1
  3. 1 → n //n=1
  4. 1×1 → x //x=1
  5. 1+1 → n //n=2
この状態の右の流れ図において、aに各選択肢の条件式を入れたときに、結果xが2となるかどうかを見ていきます。
  • n=2、M=2なので、2<2⇒Noでループ先頭へ戻る。以後ループ内でnの値は1ずつ加算されていくので、n<M の条件を満たすことは永遠にありません。このため、無限ループとなってしまいます。
  • n=2、M=2なので、2>2-1⇒Yesでループから抜ける。 結果xの値は1で、左の流れ図とは異なる値となります。よって、条件式として不適切です。
    1. n=2、M=2なので、2>2⇒Noでループ先頭へ戻る //x=1
    2. 1×2 → x //x=2
    3. 2+1 → n //n=3
    4. n=3、M=2なので、3>2⇒Yesでループから抜ける //x=2
    結果xの値は2で、左の流れ図と同じ値になるので、適切な条件式だとわかります。
    1. n=2、M=2なので、2>2+1⇒Noでループ先頭へ戻る //x=1
    2. 1×2 → x //x=2
    3. 2+1 → n //n=3
    4. n=3、M=2なので、3>2+1⇒Noでループ先頭へ戻る //x=2
    5. 2×3 → x //x=6
    6. 3+1 → n //n=4
    7. n=4、M=2なので、4>2+1⇒Yesでループから抜ける //x=6
    結果xの値は6で、左の流れ図とは異なる結果になります。
以上の結果から、二つのアルゴリズムの結果を同じにする条件aとして「ウ」が適切とわかります。
© 2010-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop