back

流れ図(2)


★★★宿題:二種向け★(2000/2/9)
 正の整数Mに対して次の二つの流れ図に示したアルゴリズムを実行したとき,
結果のxの値が等しくなるようにしたい。┏━┓に入れる条件として,正しい
ものはどれか。                   ┗━┛

流れ図1 _____
        ( 開  始  )
         ̄ ̄│ ̄ ̄
      ┌──┴──┐
      │   1→ x   │
      └──┬──┘
        ──┴──
        / 演 算 \ ループ端の繰り返し指定は,
       │ n : M, -1,1│変数名:初期値,増分,終値
       └──┬──┘を示す。
       ┌──┴──┐
       │ x × n→x │
       └──┬──┘
       ┌──┴──┐
       │          │
        \ 演 算 /
         ──┬──
         ──┴──
        (   終   了 )
          ̄ ̄ ̄ ̄ ̄
流れ図2  _____
        (   開  始  )
          ̄ ̄│ ̄ ̄
       ┌──┴──┐
       │  1 → x   │
       └──┬──┘
       ┌──┴──┐
      │  1 → n  │
       └──┬──┘
 ┌────→│
 │    ┌──┴──┐
 │    │ x×n →x  │
 │   └──┬──┘
 │   ┌──┴──┐
 │   │n +1→n  │
 │   └──┬──┘
 │          │
 │        / \
 │ NO  /┏━┓\
 └───\┗━┛/
           \ /
             │YES
         ──┴──
         ( 終 了 )
        ̄ ̄ ̄ ̄ ̄


 ア n>M

 イ n>M+1

 ウ n>M−1

 エ n<M


(太チョ解答例)
<
トレース表を使用>
Mを3として計算

順番 流れ図1 流れ図2
1
2   1   1
3 3   1  
4   3   1
5 2   2  
6   6   2
7 1   3  
8   6   6
9     4  
10       24


xが同じ値で終わるためには流れ図2のnが9番目で終わる条件
代入する。
よってn>Mでループを終了する。 

■解答■(宿題メールより)
  二種午前平成11年秋問15
> 流れ図1は M!の計算なので、1 から M までの積になるようにすれば良い。
> したがって、nがMより大きくなるまで繰り返す。

 どうもありがとうございました。

> 流れ図1の1回目は,1*M
>      2回目は,1*M*(M−1)    
>      3回目は,1*M*(M−1)*(M−2)  
>      M回目は,1*M*(M−1)*(M−2)*・・・・・*1
>という様に続くので,これはMの階乗を求める流れ図である。
>    
> 流れ図2をMの階乗を求める流れ図にするには,
>      1回目は,1*1 
>      2回目は,1*1*2
>      3回目は,1*1*2*3
>      M回目は,1*1*2*3*・・・・・*M
>になるとよいので,何回目かを示すnの値がMより大きくなった時という条件
>(n>M)が問題の場所にあるといい。よって,アです。    

 どうもありがとうございました。

>流れ図の問題は、実際に値を入力して移り変わる様子を
>トレースしてみるのが一番だと思って、やってみました。
>上の図
>|x|1|5|20|60|120|
>------------------------
>|n|5|4| 3| 2|  1|
>------------------------
>下の図
>|x|1|1|2|6|24|120|
>--------------------------
>|n|1|2|3|4| 5|  6|
>
>下の図で n が 6になったとき
>終了すればいいので、n>M

 どうもありがとうございました。