第三種電気主任技術者の過去問
令和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
この解説の修正を提案する
前の問題(問62)へ
令和2年度(2020年)問題一覧
次の問題(問64)へ