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

電験3種 機械科目 情報 令和4年度下期 B問題18 30日分の電力量データ!最大値と平均を求める

今回は令和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 問題文

出典:一般財団法人 電気技術者試験センター「令和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件の使用電力量データの最大値・平均値算出/降順ソートの流れ図(問題図)

出題のポイント:初期化をどこから始めるか

(a)は最大値と平均値を求める流れ図——(ア)と(イ)は連動しているのがポイントです。

空欄答え意味
(ア)t←d[1]★合計もd[1]で初期化
(イ)2d[1]は使用済みなのでi=2 から
(ウ)d[i]>s★最大値を探すので「大きいか」
(エ)s←d[i]大きければ最大値を更新

最大値 s は d[1] で初期化されている——だから合計 t も d[1] からそろえるのが自然です。そうすればループを2 から回すだけで、両方とも正しく求まります

もし t←0 とするなら、ループは1 から——ところが s は d[1] で初期化済みなので、d[1]>d[1] という無意味な比較が入ります結果は同じでも、流れ図としては整合しません

選択肢(1)と(5)は t←0 でループも0 や1——(イ)の値と組み合わせて矛盾します。(ア)と(イ)をセットで見れば、すぐ絞れるのです。

答え(a)の正解は (4)——(ア)t←d[1] (イ)2 (ウ)d[i]>s (エ)s←d[i] です。
第1図・第2図 30件の使用電力量データの最大値・平均値算出/降順ソートの流れ図(問題図)
第1図・第2図 30件の使用電力量データの最大値・平均値算出/降順ソートの流れ図(問題図)
配列の最大値と平均値を求めるループと退避変数で降順交換する処理の出題ポイント図
統計処理はd[1]で初期化してi=2から、交換はwへの退避から始めます。

(b) 降順ソートの交換3ステップ

第2図は退避用変数 w を使った値の交換——順序を間違えるとデータが壊れます

空欄答え意味
(オ)d[i]<d[j]★降順なので左が小さければ交換
(カ)d[i]←d[j]右の値を左へ
(キ)d[j]←w退避した元の左の値を右へ

すでに w←d[i] は流れ図に書かれています——残りの2ステップを埋めるのが本問です。「退避したら、そこへ何を入れ、退避した値をどこへ戻すか」を追えば決まります。

\( w \leftarrow d[i] \)
①退避(記載済み)
元の左の値を保存
\( d[i] \leftarrow d[j] \)
②(カ)
★左が上書きされる
\( d[j] \leftarrow w \)
③(キ)
保存した値を右へ

(カ)を d[j]←d[i] としてしまうと、右の値が消えます——選択肢(1)(3)(5)がこの誤り矢印の向きを1つずつ確かめることが大切です。

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

⚠️ よくある間違い
(オ)の不等号を逆にしてしまうのが典型的な誤り——選択肢(4)(5)が d[i]>d[j] です。
「降順に並べたい」=「左のほうが大きくあるべき」——だから左が小さいときが異常で、そこで交換します。
迷ったら小さな例で確かめる——[1, 2] を降順にしたいなら交換が必要このとき d[i]=1、d[j]=2 で d[i]<d[j]——2つの数だけで向きが確定します

平均値はどこで計算するか

合計 t を求めた後、30 で割れば平均——ループの外で1回だけ行う処理です。

平均値
\( \bar{d}=\dfrac{t}{k} \)

t は合計、k はデータ件数(本問は30)

ループの中で毎回割ってはいけません——まだ合計が完成していないからです。「繰り返しの中でやること」と「終わってからやること」分けて考えるのが流れ図を読むコツになります。

場所やること
ループの前★初期化(s、t にd[1])
ループの中加算と最大値の更新
ループの後★平均の計算と出力

この3つの位置関係が、どのプログラムでも共通——初期化・繰り返し・後処理という型です。流れ図を見たら、まずこの3区画に分けて眺めるとよいでしょう。

30件という規模を実感する

本問は30件の使用電力量データ——電気の実務でよくあるデータ量です。

処理回数
(a) 最大値と合計の走査29回(i=2〜30)
(b) 降順ソートの比較★30×29÷2=435回

最大値を探すだけなら1回なめれば済む——ところが並べ替えとなると435回15倍近い手間です。

「何がしたいか」で必要な計算量が大きく変わる——最大値だけ知りたいのに並べ替えるのは無駄だということ。本問が(a)(b)を分けて出題している意味もそこにあります。

⏱️ 本番での進め方
①(a) (ア)と(イ)はセット。d[1]で初期化ならループは2 から。
②(ウ)は「大きいか」。最大値探索なので不等号は>。
③(b) 交換は退避→上書き→書き戻し。(カ)は d[i]←d[j]。
④★(オ)の向きは「[1,2]を降順に」で確かめれば一発。

💡 覚え方
「初期化・繰り返し・後処理」の3区画で流れ図を見る——平均の割り算はループの外そして「降順なら左が小さいとき交換」です。

ほぼ同一の流れ図が平成20年度 B問題18にあります(情報:最大値・平均値と降順ソートの流れ図)。記号の書き方が少し違うだけなので、両方解いておけば形式に慣れます

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

選択肢の組合せから絞る

4つの空欄に5つの選択肢——全部を検討せず、確実に分かる欄から潰すのが得策です。

確定させる欄正しい値残る選択肢
(ウ)d[i]>s★(2)(4)のみ
(ア)t←d[1]★(4)に確定

(ウ)の不等号だけで3つ落とせます——最大値を探すのだから「大きいか」ここは迷いようがありません

残った(2)と(4)の違いは(ア)だけ——t←0 か t←d[1] か(イ)が2 なのですから、d[1] は初期化で使われているはず——だから t←d[1] です。

2つの欄を見ただけで答えが出る——4つ全部を検討する必要はありません「一番自信のある欄から手をつける」のが穴埋め問題の鉄則です。

(b)も同じ手順で

(オ)の不等号で(4)(5)が落ちます——降順なら d[i]<d[j]残るは(1)(2)(3) です。

次に(カ)を見ると、d[i]←d[j] は(2)だけ——これで確定します。(キ)を確認する前に答えが出るのです。

時間が足りないときほど、この絞り込みが効きます——B問題は(a)(b)で各5点1問に費やせるのはせいぜい7〜8分だからです。

まとめ

(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をコピーしました!

この記事を書いた人

コメント

コメントする

目次