第三種電気主任技術者の過去問
令和2年度(2020年)
機械 問64

このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。

問題

第三種 電気主任技術者試験 令和2年度(2020年) 機械 問64 (訂正依頼・報告はこちら)

図は、n個の配列の数値を大きい順(降順)に並べ替えるプログラムのフローチャートである。次の問に答えよ。

このプログラム実行時の読込み処理において、n=5とし、a[1]=3、a[2]=1、a[3]=2、a[4]=5、a[5]=4とする。フローチャート中のXで示される部分の処理は何回行われるか、正しいものを次の選択肢の中から一つ選べ。
問題文の画像
  • 3
  • 5
  • 7
  • 8
  • 10

次の問題へ

正解!素晴らしいです

残念...

この過去問の解説 (2件)

01

第53813問の答えより、

[ア] a[i] < a[j]

 j番のa[j]の方が、i番のa[i]よりも大きければ、

 mにa[i]を仮保存し、a[i]とa[j]を入れ替える。

[イ] a[i] ← a[j]

 a[i]にa[j]を入れて、

[ウ] a[j] ← m

 a[j]には仮保存しておいたm(=当時のa[i])を入れる。

これが処理Xです。

その後、jを+1し、a[i]との比較を続けます。

今回の問題では、aの初期の配列は [ 3,1,2,5,4 ] です。

この配列において、今回のループ処理を順を追っていきます。

まずi=1から始まり、その時j=2です。

i = 1, j = 2 [ 3,1,2,5,4 ] ⇒ NO(1<3) ⇒ [ 3,1,2,5,4 ] (そのまま)

i = 1, j = 3 [ 3,1,2,5,4 ] ⇒ NO     ⇒ [ 3,1,2,5,4 ]

i = 1, j = 4 [ 3,1,2,5,4 ] ⇒ YES(5>3)⇒ [ 5,1,2,3,4 ] (入れ替わる)

i = 1, j = 5 [ 5,1,2,3,4 ] ⇒ NO     ⇒ [ 5,1,2,3,4 ]

i = 2, j = 3 [ 5,1,2,3,4 ] ⇒ YES(2>1) ⇒ [ 5,2,1,3,4 ]

i = 2, j = 4 [ 5,2,1,3,4 ] ⇒ YES(3>2) ⇒ [ 5,3,1,2,4 ]

i = 2, j = 5 [ 5,3,1,2,4 ] ⇒ YES(4>3) ⇒ [ 5,4,1,2,3 ]

i = 3, j = 4 [ 5,4,1,2,3 ] ⇒ YES(2>1) ⇒ [ 5,4,2,1,3 ]

i = 3, j = 5 [ 5,4,2,1,3 ] ⇒ YES(3>2) ⇒ [ 5,4,3,1,2 ]

i = 4, j = 5 [ 5,4,3,1,2 ] ⇒ YES(2>1) ⇒ [ 5,4,3,2,1 ]

処理Xの回数、つまり入れ替えが起きた回数は、

YESの数なので、計7回の入れ替えを行っています。

よって、[3]が正解です。

参考になった数0

02

正解:【3】

※この問題は第53813問と関連しています。

プログラムのに記載されていないコマンドは

 (ア)は a[i] < a[j]

 (イ)は a[i] ← a[j]

 (ウ)は a[j] ← m

となっています(第53813問参照)。

開始時の配列は a = [3 1 2 5 4] です。

順番にループを回しますと、次のようになります。なお赤字はa[i]とa[j]になる数値を示します。

i=1 / j=2 → a = [3 1 2 5 4] →(ア)= NO → a = [3 1 2 5 4]

i=1 / j=3 → a = [3 1 2 5 4] →(ア)= NO → a = [3 1 2 5 4]

i=1 / j=4 → a = [3 1 2 5 4] →(ア)= YES → a = [5 1 2 3 4]

i=1 / j=5 → a = [5 1 2 3 4] →(ア)= NO → a = [5 1 2 3 4]

i=2 / j=3 → a = [5 1 2 3 4] →(ア)= YES → a = [5 2 1 3 4]

i=2 / j=4 → a = [5 2 1 3 4] →(ア)= YES → a = [5 3 1 2 4]

i=2 / j=5 → a = [5 3 1 2 4] →(ア)= YES → a = [5 4 1 2 3]

i=3 / j=4 → a = [5 4 1 2 3] →(ア)= YES → a = [5 4 2 1 3]

i=3 / j=5 → a = [5 4 2 1 3] →(ア)= YES → a = [5 4 3 1 2]

i=4 / j=5 → a = [5 4 3 1 2] →(ア)= YES → a = [5 4 3 2 1]

数値を大きい順に並べるには、Xを7回実施しています。

以上により、選択肢の【3】が正解となります。

参考になった数0