この問題では、大きく分けて3つのことをしています。
1.データを1件ずつ読む。
2.金額を計算して合計に足す。件数をカウントする(増やす)。
3.最後に平均を求める。
プログラミングの流れ図で考えると難しいかもしれません。
しかし、人の手で3件程度のデータで真似してやってみるとフローチャートに何を書くべきか段々と分かるようになるはずです。
人力でやる場合は、商品コード・商品名・単価の表と、売上の記録(売れた商品のコードと売れた個数)を目で見て、計算しながら合計や平均を求めていく、と考えてみましょう。
画像1枚目の2つの表を見てください。
上の表が「商品情報の表」で、下の表が「売上の記録」です。売上記録の商品コードには、商品情報のコードのどれかと一致するものしかありません。
それに、同じ商品コードの売上はまとめてあるので、コードが重複していることはありません。
ただし、売上記録の商品コードは必ずしも小さい順になっているとは限りません。そのため、売上データのコードを目で見て、それと同じコードを商品情報の表から探さなければいけません。
最初の記録は「0002番が4個売れた」なので、商品情報からコードが一致するものを探します。
商品の種類は3つしかないので、すぐに一致するものが見つかり、それは米だと分かります。
米は単価5000円で、売れた個数である4を掛けた、20000円が金額になります。
金額が分かったら、商品名と売り上げた個数と金額を書き留めておき、件数を数えておきます。いま件数は1です。
次に売上の記録の表の0001の行を見ます。
商品情報から0001はクッキーと分かり、単価300円のクッキーが5個で、金額は1500円となります。
これも書き留めておき、件数が1増えて2になります。
最後に、0003番、150円の歯ブラシが3個売れたので金額は450円、件数は3と分かります。
これで売上の記録は読み終わったので、平均を算出します。では、書き留めておいた金額をすべて足します。
足すと21950となり、これを件数の3で割ります。
(詳しい計算は画像2枚目をご覧ください。)
すると、平均は、小数点以下切り捨てで7316となります。
流れ図の話に戻ります。ここまでの流れをプログラムに置き換えると、次のような手順になります。
(入力データ:画像3枚目、プログラム:画像4枚目)
まず、商品コード・商品名・単価をそれぞれ配列に入れておきます。これは「商品情報の表」にあたります。
次に、売上の記録から「商品コードと売れた数量」を1件ずつ読み込みます。これが「ループ1」の役割です。
読み込んだ商品コードがどの商品かを探すために、商品情報の配列を先頭から順に調べていきます。これが「ループ2」です。
一致するコードが見つかれば、単価に数量を掛けて金額を計算します。その金額を合計に足し、件数を1増やします。同時に、商品名・数量・金額を表示します。
すべての売上データを処理し終わったら、最後に合計金額を件数で割り、平均を求めて表示します。小数点以下は切り捨てです。(実行結果:画像5枚目)
つまり、このプログラムがしていることは、人間が紙と電卓を使って行う計算作業を忠実に機械にやらせているだけです。
フローチャートは、その手順を「入力」「処理」「出力」という形で整理したものだと考えると分かりやすいかと思います。





検定はどうなりましたか。
回答の確認をお願いします。