第三種電気主任技術者の過去問
令和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で示される部分の処理は何回行われるか、正しいものを次の選択肢の中から一つ選べ。
このプログラム実行時の読込み処理において、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
この解説の修正を提案する
前の問題(問63)へ
令和2年度(2020年)問題一覧
次の問題(問65)へ