第13問

平均値を表示するプログラムを作りました。以下のソースファイル「average.c」はその一部なのですが、改善できる部分があります。

どこが改善できるか分かりますか?
average.c
#include <stdio.h>

double sumOfValues = 0;
int numberOfValues = 0;

void AddValue(double n) {
  sumOfValues += n;
  numberOfValues += 1;
}

void PrintAverage(void) {
  if (numberOfValues > 0) {
    printf("Average = %f\n", sumOfValues / numberOfValues);
  } else {
    printf("No data.\n");
  }
}

なお、このプログラムは別のソースファイル内から(main()などから)、次のように2種類の関数を呼び出して使用することを想定したものです。

サンプルコード
  /* 数値を足していく */
  AddValue(2.0);
  AddValue(1.5);
  AddValue(5.5);
  AddValue(1.0);

  /* 最後に平均値を表示する */
  PrintAverage();
実行結果
Average = 2.500000
今回のプログラムは、複数のモジュールからできていることが分かるかしら?
えっと、「average.c」が1つのモジュールってことですよね?
そうね。その中にある2つの関数を……
別のモジュールから呼び出す仕組みですね!
そういうこと!2つの関数が、そのためのインターフェースになっているということよ。
「average.c」の実装に注目してみましょう。