prog1.c

説明を見る。
00001 /**
00002    @file  prog1.c
00003    @brief データの平均値と,個々のデータの平均値との差をもとめる
00004    @author 学籍番号 工芸太郎
00005    @date  ○○年○月○日
00006 
00007    複数の整数データを読み込み,
00008    -# その平均値を求める
00009    -# 個々のデータについて,その値と平均値との差を表示する
00010 
00011    @section sec1 処理手順
00012    -# データを配列に読み込む
00013    -# データの総和を計算し,データの個数で割って平均値を求める
00014    -# 個々のデータについて,
00015        -  その値, および,平均値を引き算した書き出す
00016 
00017    @section sec2 実行例
00018    @subsection sec2-1 入力データ
00019 
00020            10@n
00021            30@n
00022            20@n
00023            10@n
00024            40@n
00025 
00026     @subsection sec2-2 実行結果
00027 
00028 <pre>
00029    データ数 = 5
00030    平均値 = 22.000000
00031    n       data[n] 平均値との差
00032    0       10      -12.000000
00033    1       30      8.000000
00034    2       20      -2.000000
00035    3       10      -12.000000
00036    4       40      18.000000
00037 </pre>
00038 */
00039 
00040 /**
00041    NMAX:  取り扱うことができるデータの最大個数(配列 data のサイズ)
00042 */
00043 #include <stdio.h>
00044 #include <math.h>
00045 #define NMAX 1000
00046 
00047 /**
00048    @brief 標準入力よりデータを読み込む
00049    @param[out] a[] 読み込んだデータを格納する配列
00050    @return 読み込んだデーtの個数
00051 */
00052 int getData(int a[]) {
00053   int n = 0;
00054   //  このコメントはドキュメントに反映されない
00055   /// データがなくなるまで繰り返し読み込んで,配列 a に格納する
00056   while( scanf("%d", &a[n]) == 1 ) {
00057     n++;
00058     ///  データの個数が NMAX に達したら,エラーメッセージを書き出して
00059     ///  繰り返し処理(入力)を止める
00060     if( n == NMAX ) {
00061       printf("データ数が上限値を越えたので,これ以上のデータは無視する\n");
00062       break;
00063     }
00064   }
00065   return n;      /// 読み込んだデータの個数を返す
00066 }
00067 
00068 /**
00069    @brief main関数  ここから処理を開始する
00070 */
00071 int main() {
00072   int data[NMAX];
00073   int n = 0;
00074   int k, sum;
00075   double av;
00076 
00077   ///  - データを読み込む
00078   n = getData(data);
00079 
00080   ///  - データの総和を求める
00081   sum = 0;
00082   for(k=0; k<n; k++) {
00083     sum += data[k];
00084   }
00085 
00086   ///  -  総和をデータの個数で割って平均値を計算する
00087   av = (double)sum / (double)n;
00088 
00089   ///  -  データ数と平均値を書き出す
00090   printf("データ数 = %d\n平均値 = %lf\n", n,av);
00091 
00092   ///  -  個々のデータの値と平均値からの差を書き出す
00093   printf("n\tdata[n]\t平均値との差\n");
00094   for(k=0; k<n; k++)
00095     printf("%d\t%d\t%lf\n", k,data[k], data[k]-av);
00096 }

Mon Jul 13 17:12:59 2009に生成されました。  doxygen 1.4.7