流れ図①(過去問にチャレンジ)解答

正解:(a)(4)、(b)(2)

解説

(a):まず設問の通り、やろうとしていることは、その1“最大値”を出力する、その2“平均値”を出力することである。

流れ図の最後の方を見ると、最大値s、平均値aと記載されているので、sという変数に最大値を格納して、aという変数に平均値を格納する。また、平均値を算出するために、1つ前の記号をみると、a←t/kと記載があり、kは最初の方で件数である30と定義しているので、tは合計値である。(中ほどでも“合計を求める”と記載あり)

つまり、この流れ図全体として、sには最大値を入れたいので、全ての項目d[i]を比較していき、最大値を最終的にsに格納する。そして、tには全ての項目d[i]を加算して30件分の合計値を算出し、最後に項目数であるk=30で割った数値を平均値aに格納する。ということを念頭に置き、流れ図を見ていく。

したがって、正解は(4)となる。

(b):まず、やりたいことは、大きい順(降順)に並べることであり、d[1]~d[30]の箱に対して、1番大きい数値をd[1]に格納、2番目に大きい数値をd[2]に格納、・・・1番小さい数値をd[30]に格納ということをしたい。

(a)の時には、最大値1つだけを見つければ良かったので、1つのループだけで完結したが、今回は大きい順に並べるため、まずは全ての30個の中で一番大きい数値を探し、d[1]の箱へ格納し、次に残りの29個の中で一番大きい数値を探し、d[2]の箱へ格納し、というように一番大きい数値を探すループを何回も回す必要があるので、流れ図のようにiとjという2変数でのループを構成している。

外側ループであるiのループでは箱d[i]に入れる数値を決めましょうというループであり、最初はd[1]、次にd[2]・・・最後にd[29]の箱に入れる数値を決める(d[29]が決まると、必然的にd[30]は決まるので、d[30]を決めるためのループは不要)。内側ループであるjのループは残っている数値の中で一番大きい数値を探すループであり、言わば実務部隊のループ。ということを念頭に置き、流れ図を見ていく。

したがって、正解は(2)となる。

問題を選ぶ