平均値を表示するプログラムを作りました。以下のソースファイル「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」の実装に注目してみましょう。