練習 [4] while 文(教科書では主に 4 章が対応)(2/5)

練習 2(提出プログラム名:p0402.c)

サンプルプログラム 2 (sample2.c)p0402.c という別の名前のファイルにコピーしなさい.そして,p0402.c を編集して以下の例のように実行できるプログラムを作りなさい.
このプログラムでは整数を繰り返し読み込み(0 を入力したら終わり),それらの合計値と平均値を表示させている.ただし,平均値は小数点以下第2位までを表示させるものとする.なお,平均値の算出にあたって,最後に入力した 0 は個数に含めないものとする.
なお,このプログラムでは double 型の変数を用意してはいけません

※この問題は do-while 文の練習が目的なので,必ず do-while を使うことそれ以外の構造で作った場合は不正解と見なす).

【ヒント】
この問題では平均値を求める際に注意が必要です.
入力される値とそれらの合計値,ならびにそれらの個数はいずれも int 型の整数です.したがって,そのまま合計値を個数で割ると「int 型と int 型の割り算」になって小数点以下が切り捨てられます.
第 2 回の講義で学んだように,その場合は割り算の分子の方だけ double 型にキャストしてあげる必要があります.

  • 【プログラムの実行例】(その1)赤字は実行時にキーボードから入力する内容
    ※サンプルプログラムでの「入力を終了します」という表示はこの問題では不要なので削除せよ
整数を 1 つ入力してください:30
整数を 1 つ入力してください:-5
整数を 1 つ入力してください:27
整数を 1 つ入力してください:0
合計値は 52 です
平均値は 17.33 です
  • 【プログラムの実行例】(その2)※講義で説明したリダイレクトによるデータ入力(data2-1.txt を使用)※ Mac 環境の人は a ではなく ./a.out と入力してください.
a < data2-1.txt
整数を 1 つ入力してください:整数を 1 つ入力してください: ... (途中省略) ... 
 ... (途中省略) ... 整数を 1 つ入力してください:整数を 1 つ入力してください:
合計値は 1132 です
平均値は 45.28 です
  • 【プログラムの実行例】(その3〜5)リダイレクトによるデータ入力

 同様にして
   data2-2.txt の場合:合計値は 3869,平均値は 48.36
   data2-3.txt の場合:合計値は 4410,平均値は 50.11
   data2-4.txt の場合:合計値は 4815,平均値は 48.64

【過去にあったミス(減点となり,やり直しを命じられる)】
■ 上の5種類の実行例と答えが違っている(きちんと確認していない).
  (例1)平均値が違っている.
  (例2)小数点以下の桁数指定の方法を間違っている.
  (例3)サンプルプログラムでの「入力を終了します」という表示が残っている.
      この問題では不要なので削除すること.
■ 繰り返しの条件を書き間違えていて無限ループになっている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


ミスが無いことを確認したら次の問題へ → [ 練習3 (p0403.c) ]