/* Part4 演習問題7 */
/* 成績データの平均値と分散 */
#include <stdio.h>

int main(void)
{
  int d,n ;
  double s,ss ;          /* 合計と平方和 */
  double mean,var ;      /* 平均値と分散 */

  printf("成績を入力してください(100点満点、負の値で終了)。\n") ;

  n=0 ;
  s=0 ;
  ss=0 ;

  while(1) {
    printf("%d> ",(n+1)) ;
    scanf("%d",&d) ;
    if(d>100) {
      printf("満点を超えています。正しい成績を入力し直してください。\n") ;
    }
    else if(d<0) break ;
    else {
      n++ ;
      s += d ;
      ss += d*d ;
    }
  }

  if(n>0) {
    mean = s/n ;
    var = ss/n - mean*mean ;

    printf("データ件数は%d   平均値は%f  分散は%fです。\n",n,mean,var) ;
  }
  else {
    printf("データが入力されていません。\n") ;
  }
  return(0) ;
}

% gcc -Wall part4-7.c
% ./a.out
成績を入力してください(100点満点、負の値で終了)。
1> 78
2> 76
3> 65
4> 102
満点を超えています。正しい成績を入力し直してください。
4> 99
5> 80
6> 56
7> 81
8> 92
9> 77
10> 59
11> 60
12> -1
データ件数は11   平均値は74.818182  分散は171.057851です。

  1. 入力プロンプトとして,データ番号を表示している.
  2. 満点(100点)以上の値が入力された場合には,エラーメッセージを表示し,再入力を求めている.
  3. 平均値および分散とともに,データ件数(個数)を表示している.