39PM59|第39回 臨床工学技士国家試験 過去問
図のフローチャートで入力値 a、b、c に対して得られる値はどれか。 ただし、a、b、c はそれぞれ異なる整数値とする。

解答・解説を見る
正解: 3
正答
3
この問題のポイント
この問題では、フローチャートの処理内容を読み取り、最終的に出力される値が何を表すかを判断します。
ポイントは、変数 X に最初 a を代入し、その後 b、c と順に比較して、より小さい値があれば X を更新していることです。
解説
図のフローチャートは、入力値 a、b、c の中から最小値を求める処理です。
処理の流れを順に追います。
まず、a、b、c を入力します。
次に、
- X ← a
として、X に a の値を入れます。
この時点では、X は「今のところ最小候補」と考えます。
次に、b と X を比較します。
- b < X なら、X ← b
- b < X でなければ、X はそのまま
つまり、b が現在の X より小さければ、X を b に更新します。
さらに、c と X を比較します。
- c < X なら、X ← c
- c < X でなければ、X はそのまま
つまり、c が現在の X より小さければ、X を c に更新します。
最後に X を出力します。
このように、X には a、b、c のうち最も小さい値が残ります。したがって、得られる値は最小値です。
図で見るポイント
フローチャートでは、最初に X ← a として基準を作っています。その後、b < X、c < X の条件判定で、より小さい値が見つかるたびに X を更新しています。これは最小値を探す典型的なアルゴリズムです。
ひっかけポイント
比較式が b > X や c > X ではなく、b < X、c < X です。大きい値ではなく、小さい値を残していく処理だと判断します。
選択肢の確認
1.誤り。
合計値を求めるには、a + b + c のように加算する処理が必要です。このフローチャートでは加算処理はありません。
2.誤り。
平均値を求めるには、合計値を求めて 3 で割る処理が必要です。このフローチャートには割り算の処理はありません。
3.正しい。
X に a を入れた後、b、c が X より小さい場合に X を更新しています。最終的に X には a、b、c の中で最も小さい値が入ります。
4.誤り。
中央値を求めるには、3つの値を大小順に並べて中央の値を選ぶ処理が必要です。このフローチャートでは最小値だけを残しています。
5.誤り。
最大値を求める場合は、b > X、c > X のように、より大きい値を見つけたときに X を更新します。この図では b < X、c < X で更新しているため、最大値ではありません。
覚えるポイント
- フローチャートでは、まず代入処理と条件分岐を順番に追います。
- X ← a は、X に a を代入するという意味です。
- b < X なら X ← b は、より小さい値に更新する処理です。
- c < X でも同じく、より小さい値に更新します。
- 小さい値が見つかるたびに更新する処理は、最小値探索です。