情報34【電験3種 機械】30件の使用電力量データの最大値・平均値算出と降順ソート!令和4年度下期 B問題18 完全解説

電験3種 機械科目【情報】令和4年度下期 B問題18 配列を使ったデータ処理(最大値・平均値の算出、降順ソートのフローチャート穴埋め)

今回は令和4年度下期 機械科目 B問題18を解説します。30件分の使用電力量データについて、配列d[30]から最大値と平均値を出力するプログラムの流れ図(第1図)の空欄(ア)〜(エ)を求める(a)と、30件のデータを大きい順(降順)に並べ替える流れ図(第2図)の空欄(オ)〜(キ)を求める(b)の2段構成の問題です。

(a)は最大値変数sと合計変数tの初期化、ループの開始位置、最大値更新の判定式という定番パターンです。(b)はバブルソート型の二重ループで、退避用変数wを使った3ステップの値交換処理(w←d[i],d[i]←d[j],d[j]←w)を穴埋めします。

目次

令和4年度下期 機械科目 B問題18:問題文と選択肢

まずは、実際の試験問題を確認してみましょう。

電験3種 機械科目 情報 令和4年度下期 B問題18 問題文
令和4年度下期 機械科目 B問題18 問題文

電験3種 機械科目 【情報】 令和4年度下期 B問題18

 30件分の使用電力量のデータ処理について,次の(a)及び(b)に答えよ。

(a) 第1図は,30件分の使用電力量の中から最大値と30件分の平均値を出力する一つのプログラムの流れ図を示す。第1図中の(ア)〜(エ)に当てはまる処理として,正しいものを組み合わせたのは次のうちどれか。

(b) 第2図は,30件の使用電力量を大きい順(降順)に並べ替える一つのプログラムの流れ図を示す。第2図中の(オ)〜(キ)に当てはまる処理として,正しいものを組み合わせたのは次のうちどれか。ただし,wは一時的な退避用の変数と考えよ。

(ア)(イ)(ウ)(エ)
(1)t←d[1]0d[i]<ss←d[i]
(2)t←02d[i]>ss←d[i]
(3)t←d[1]2d[i]<sd[i]←s
(4)t←d[1]2d[i]>ss←d[i]
(5)t←00d[i]<sd[i]←s
(オ)(カ)(キ)
(1)d[i]<d[j]d[j]←d[i]d[j]←w
(2)d[i]<d[j]d[i]←d[j]d[j]←w
(3)d[i]<d[j]d[j]←d[i]d[i]←w
(4)d[i]>d[j]d[i]←d[j]d[j]←w
(5)d[i]>d[j]d[j]←d[i]d[i]←w
第1図・第2図 30件の使用電力量データの最大値・平均値算出/降順ソートの流れ図(問題図)
第1図・第2図 30件の使用電力量データの最大値・平均値算出/降順ソートの流れ図(問題図)

出題のポイント:初期化・比較・交換の順を読む

配列の最大値と平均値を求めるループと退避変数で降順交換する処理の出題ポイント図
統計処理はd[1]で初期化してi=2から、交換はwへの退避から始めます。

最大値と合計をd[1]で初期化したら、d[1]を重ねて処理しないようi=2から走査します。降順ソートでは、左側が右側より小さいときに交換し、元のd[i]を失わないようwへ退避してから上書きします。

ポイント解説:先頭要素の利用と安全な値交換

d1による最大値と合計の初期化、および一時変数wを使う三段階の交換を示す解説図
退避→上書き→書き戻しの順なら、交換前のd[i]を失いません。

(a)は配列から最大値を探索しながら合計も計算する典型的なフローチャートです。最大値変数sと合計変数tを最初の要素d[1]で初期化し、2番目の要素からループを開始する点がポイントです。

(b)はバブルソート型の二重ループによる降順整列です。退避用変数wを使って「w←d[i]」「d[i]←d[j]」「d[j]←w」という3ステップで値を交換します。

問題の解説:最大値探索と降順交換の空欄を確定する

最大値平均値処理の4空欄と降順ソートの3空欄および正答4と2を示す解答図
(a)は選択肢(4)、(b)は選択肢(2)です。

STEP1 (a) 初期化処理(ア)(イ)を求める

最大値s←d[1]と同時に,合計変数もt←d[1]で初期化するのが(ア)。

d[1]は初期化済みのため,ループはi=2(イ)からk=30までとする。

STEP2 (a) 合計の積算とループ範囲を確認する

各要素についてt←t+d[i]で合計を継続的に加算する(すでにフローチャートに明記された処理)。

STEP3 (a) 最大値更新の判定(ウ)(エ)を求める

新しい要素d[i]が現在の最大値sより大きければ更新するので,判定(ウ)はd[i]>s

YES側の処理(エ)はs←d[i](最大値の更新)。

以上より(ア)t←d[1](イ)2(ウ)d[i]>s(エ)s←d[i]の組合せである(4)が(a)の正解です。

STEP4 (b) 交換条件(オ)と交換処理(カ)(キ)を求める

降順に並べたいので,d[i]がd[j]より小さければ(順序が逆なら)交換が必要。判定(オ)はd[i]<d[j]

交換はw←d[i](退避)→(カ)d[i]←d[j](d[j]の値をd[i]へ)→(キ)d[j]←w(退避していた元のd[i]をd[j]へ)の3ステップ。

以上より(オ)d[i]<d[j](カ)d[i]←d[j](キ)d[j]←wの組合せである(2)が(b)の正解です。

答え:(a)-(4),(b)-(2)

💡 覚え方
最大値探索は「s←最初の要素で初期化→2番目からループ→新値が大きければ更新」の定番パターン。値の交換は退避用変数wを使い「w←d[i],d[i]←d[j],d[j]←w」の3ステップで行う。

⚠️ よくある間違い
ループの開始位置をi=1としてしまい,d[1]同士の無意味な比較を発生させない(すでにs,tの初期値として使用済みのためi=2から)。交換の3ステップの順序(退避→上書き→書き戻し)を入れ替えない。

まとめ

(a)(ア)t←d[1]
(a)(イ)2
(a)(ウ)d[i]>s
(a)(エ)s←d[i]
(b)(オ)d[i]<d[j]
(b)(カ)d[i]←d[j]
(b)(キ)d[j]←w
答え(a)-(4),(b)-(2)

▼あわせて解きたい関連問題
・30件の使用電力量データの最大値・平均値算出と降順ソート(平成20年度の類題):【機械】平成20年度B問題18
・配列を使ったバブルソートのアルゴリズム:【機械】平成29年度B問題18

📚 次に解くべき関連問題
【機械】平成29年度B問題18(情報33)
【機械】平成20年度B問題18(情報35)
【機械】令和4年度下期A問題13(情報39)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次