橋平礼の電験三種合格講座

過去50年分以上の電験三種の問題を解いて分かった、電験三種は今も昔も変わりません。過去問を解きながら合格を目指しましょう。

MENU

令和2年(2020年) 電験三種 機械 問18

amazon kindle版の「電験三種」に関する本を出版しました。

そちらも見て下さい。 

 

 


  問18

 図は,n個の配列の数値を大きい順(降順)に並べ替えるプログラムのフローチャートである。次の(a)及び(b)の問に答えよ。
(a)図中の(ア)~(ウ)に当てはまる処理の組合せとして,正しいもの次の(1)~(5)のうちから一つ選べ。

   (ア)   (イ)   (ウ) 
(1) a[i]>a[j] a[j]←a[i] a[i]←m
(2) a[i]>a[j] a[i]←a[j] a[j]←m
(3) a[i]<a[j] a[j]←a[i] a[i]←m
(4) a[i]<a[j] a[j]←a[i] a[j]←m
(5) a[i]<a[j] a[i]←a[j] a[j]←m

 

(b)このプログラム実行時の読込み処理において,n=5とし,a[1]=3,a[2]=1,a[3]=2,a[4]=5,a[5]=4とする。フローチャート中のXで示される部分の処理は何回行われるか,正しいものを次の(1)~(5)のうちから一つ選べ。

(1)3  (2)5  (3)7  (4)8  (5)10

f:id:hashi-rei-channel:20201106192535p:plain



 


  答え (a):(5),(b):(3) 

(a)
大きい順に並べるソートのプログラムなので、
(ア)では、a[i]とa[j]の大きさの比較をしている。ここでは次のm←a[i]となっているので、a[j]が大きくa[i]と入れ替えるので

(ア) a[i]<a[j]
(イ)では、a[i]とa[j]を入れ替えるので、a[i]←a[j]
(ウ)では、mに入れたものをa[j]に入れるので、a[j]←m

 

(b)
始めの状態a[1]=3,a[2]=1,a[3]=2,a[4]=5,a[5]=4
Xはa[i]とa[j]を入れ替えるとき通るので、入れ替え時を見てみると次のようになります。
i=1,j=4 :a[1]=5,a[2]=1,a[3]=2,a[4]=3,a[5]=4
i=2,j=3 :a[1]=5,a[2]=2,a[3]=1,a[4]=3,a[5]=4
i=2,j=4 :a[1]=5,a[2]=3,a[3]=1,a[4]=2,a[5]=4
i=2,j=5 :a[1]=5,a[2]=4,a[3]=1,a[4]=2,a[5]=3
i=3,j=4 :a[1]=5,a[2]=4,a[3]=2,a[4]=1,a[5]=3
i=3,j=5 :a[1]=5,a[2]=4,a[3]=3,a[4]=1,a[5]=2
i=4,j=5 :a[1]=5,a[2]=4,a[3]=3,a[4]=2,a[5]=1
よって、Xは7回通っています。