HOME»ソフトウェア開発技術者平成16年春期»午前問15
ソフトウェア開発技術者平成16年春期 午前問15
問15
正の整数Mに対して,次の二つの流れ図に示すアルゴリズムを実行したとき,結果xの値が等しくなるようにしたい。a に入れる条件として,適切なものはどれか。

- n>M
- n>M+1
- n>M−1
- n<M
- [出題歴]
- 応用情報技術者 H22秋期 問7
- ソフトウェア開発技術者 H18春期 問14
分類
テクノロジ系 » アルゴリズムとプログラミング » アルゴリズム
正解
ア
解説
二つのアルゴリズムで共通の M は正の整数という条件が問題文に示されているので、Mに適当な数値を代入して解いてみることにします。数値は何でもいいのですが今回は M=2 とします。解き方としてはまず左のアルゴリズムを解き、その結果の x の値が右の式でも出力される条件はどれかを考えていくことになります。
〔左の流れ図〕
左の流れ図をトレースしてみると、M=2ではxの値は「2」になることがわかります。
〔右の流れ図〕
どの選択肢の条件でもここまでは同じです。後の部分は選択肢の条件ごとに結果 x を見ていきましょう。
〔左の流れ図〕
1 → x | //x=1 |
ループ条件 n:2 増分 -1、n=1で終了 | |
x × n → x (1×2 → x) | //x=2 |
ループ先頭に戻る n−1 → n | //n=1 |
n=1 になったのでループ終了 | //x=2 |
〔右の流れ図〕
1 → x | //x=1 |
1 → n | //n=1 |
x × n → x (1×1 → x) | //x=1 |
n+1 → n (1+1 → n) | //n=2 |
結果xの値は「2」で、左の流れ図と同じ値になります。n>M (2>2) は No → ループ先頭へ戻る。 //x=1 x × n → x (1×2 → x) //x=2 n+1 → n (2+1 → n) //n=3 n>M (3>2) は Yes → 流れ図は終了する。 //x=2
結果xの値は「6」で、左の流れ図とは異なるため誤りです。n>M+1 (2>2+1) は No → ループ先頭へ戻る。 //x=1 x × n → x (1×2 → x) //x=2 n+1 → n (2+1 → n) //n=3 n>M+1 (3>2+1) は No → ループ先頭へ戻る。 //x=2 x × n → x (2×3 → x) //x=6 n+1 → n (3+1 → n) //n=4 n>M+1 (4>2+1) は Yes →流れ図は終了する。 //x=6 - n>M−1 (2>2−1) は Yes → 流れ図は終了する。結果xの値は「1」で、左の流れ図とは異なるため誤りです。
- n<M (2<2) は No → ループ先頭へ戻る。以後ループ内で n の値は加算されていくだけなので (n<M)の条件を満たすことは永遠になく無限ループとなってしまいます。