第三種電気主任技術者(電験三種) 過去問
令和4年度(2022年)下期
問63 (機械 問21)

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

問題

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

30件分の使用電力量のデータ処理について、次の問に答えよ。

図1は、30件分の使用電力量の中から最大値と30件分の平均値を出力する一つのプログラムの流れ図を示す。図1中の(ア)~(エ)に当てはまる処理として、正しいものを組み合わせたのは次のうちどれか。
問題文の画像
  • ア:t ← d[1]   イ:0  ウ:d[i]<s  エ:s ← d[i]
  • ア:t ← 0     イ:2  ウ:d[i]>s  エ:s ← d[i]
  • ア:t ← d[1]   イ:2  ウ:d[i]<s  エ: d[i] ← s
  • ア:t ← d[1]   イ:2  ウ:d[i]>s  エ: s ← d[i]
  • ア:t ← 0     イ:0  ウ:d[i]<s  エ:d[i] ← s

次の問題へ

正解!素晴らしいです

残念...

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

01

挿入ソートアルゴリズムに関する問題です。

アルゴリズムとはデータの要素を比較して順番通りに入れ替える作業をいいます。

図のd[30]とは30件分のデーターの30番目の要素という意味合いになります。

各選択肢は以下のようになります。

【ア】‥t ← d[1]

・選択肢(ア)の要素は処理動作になります。

s ← d[1]に対してtは[0]か[1]を選ぶ事になりますが、

2つ先のフローチャートを見ると、合計値を求めることになりますが

[0]の場合、d[1]に戻ってしまうので

(1+0=1)ここはt ← d[1]が適切となります。

【イ】‥2

・合計値が0になることはないので、2が適切と言えます。

【ウ】‥d[i]>s

・選択肢(ウ)は判断動作になります。

s ← d[1]なので、

1よりも大きければそのままの配列で良いためYESとなります。

なのでd[i]>sが適切と言えます。

【エ】‥s ← d[i]

・(ウ)の記述で述べているように

1よりも大きければ新たな要素の配列となります。

なのでs ← d[i]が適切と言えます。

選択肢4. ア:t ← d[1]   イ:2  ウ:d[i]>s  エ: s ← d[i]

解説の冒頭の内容と一致するので適切です。

まとめ

この問題は選択制の問題でもあるので興味がある方はチャレンジする程度で良いかと思います。通信系が苦手な方はスルーしても問題ないかと思います。

参考になった数6

02

指定された件数の使用電力の最大値と平均値を出力するプログラムの処理手順に関する穴埋め問題です。

選択肢4. ア:t ← d[1]   イ:2  ウ:d[i]>s  エ: s ← d[i]

・(ア) t ← d [1]

配列の1番目のデータを読み込みます。

ここで選択肢にある t ← 0 とした場合、

次の処理で配列の1番目のデータを読み込むことになります。

次の選択肢に影響してくるので、(イ)と一緒に考えましょう。

・(イ) 2

(ア)で配列の1番目のデータを入れているので、

配列の2番目のデータを読み込めるようにします。

・(ウ) d [i] > s

新しく読み込んだ値とこれまでの最大値を比較します。

YESの場合、処理を行います。

・(エ) s ← d [i]

最大値を更新します。

参考になった数5

03

この問題は、30件分の使用電力量データから最大値と平均値を求める処理に関する問題です。

選択肢4. ア:t ← d[1]   イ:2  ウ:d[i]>s  エ: s ← d[i]

図1の処理は以下のような流れになっています。

・配列 d[1]~d[30] にデータを格納する。

 

・データ件数 k を 30 とする。

 

・最大値 s を d[1] で初期化する。

 

・合計値 t を(ア)で初期化する。

 

・ループ処理により、i = (イ) から k までの各データに対して以下を実行する:

t ← t + d[i] により合計値を加算。

d[i] > s であれば(ウ)を判定し、(エ)により最大値を更新する。

 

・ループ終了後、平均値 a を t / k により求め、最大値と平均値を出力する。

 

この処理の目的は、すべてのデータを走査して合計値と最大値を求めることです。

したがって、各空欄には以下の処理が適切です。

合計値 t の初期化には t ← 0 が適切です。

最大値 s を d[1] で初期化しているため、ループは i = 2 から始めるのが妥当です。

最大値の更新条件は、現在の最大値 s よりも大きい値 d[i] が見つかった場合、すなわち d[i] > s です。

条件を満たした場合、最大値 s を d[i] に更新するため、s ← d[i] が正しい処理です。

参考になった数0