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

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

問題

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

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

図中の(ア)~(ウ)に当てはまる処理の組合せとして、正しいものを次の選択肢の中から一つ選べ。
問題文の画像
  • ア:a[ i ]> a[ j ]  イ:a[ j ]← a[ i ]  ウ:a[ i ]← m
  • ア:a[ i ]> a[ j ]  イ:a[ i ]← a[ j ]  ウ:a[ j ]← m
  • ア:a[ i ]< a[ j ]  イ:a[ j ]← a[ i ]  ウ:a[ i ]← m
  • ア:a[ i ]< a[ j ]  イ:a[ j ]← a[ i ]  ウ:a[ j ]← m
  • ア:a[ i ]< a[ j ]  イ:a[ i ]← a[ j ]  ウ:a[ j ]← m

次の問題へ

正解!素晴らしいです

残念...

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

01

ループを使い、配列の中身を入れ替えていく処理を行っています。

プログラミングの知識があれば、

見ただけで並べ替えの処理だろうことがわかりますが、

知らなければ初見では分かりづらいと思います。

1からnまでの配列a[1]~a[n]について、

iに1を代入し、

iよりも1大きいjを用意しています。

その後、条件[ア]について、

YESならば、mにa[i]を代入したのち、

[イ]・[ウ]の処理を続けます。

一方[ア]がNOならば、この処理はスキップされ、

jの次の数字を参照し、

これが、配列の最大番を超えていないかを確認しています。

よって、想定される並べ替え処理は、

あるiを固定し、

jにはiより後の番号を最大番に到達するまで参照して行きながら、

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

mにa[i]を仮保存し、

a[i]とa[j]を入れ替えるため、

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

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

という処理です。

よって、正解は[5]です。

参考になった数0

02

正解:【5】

この問題にあるプログラムは、2つのループを回して、数値を大きい順に並べ替える構造です。

配列の“頭”に、順番に大きい数値を持ってくる構造になっています。

Xの部分は、並べかえるコマンドの部分になります。a[i]とa[j]を入れ替えるようになっています。

並べる対象の場合、一時保存用変数mに a[i] を保存するので、(イ)では a[i] に a[j] を入れ、最後の(ウ)では a[j]に一時保存したmを入れます。

この一連のコマンドはa[j]を配列の頭の方に持ってくるので、a[i]がa[j]より小さい時実行する必要があります。

上記より、

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

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

 (ウ)は a[j] ← m

となります。

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

参考になった数0