演習12-1

【問1】

以下のプログラムはグローバル変数に定義され、初期化された 10個の int型データの合計、平均、分散、標準偏差を求めて表示するプログラムである。

このプログラムを以下のような関数を用いて書き換えよ。

return型関数名引数機能
intget_goukeiなし合計を求めて返却する
doubleget_bunsan平均値分散を求めて返却する

なお、n件のデータの分散と標準偏差を求める式は以下である。

  分散 = { (要素0 - 平均値)2 + (要素1 - 平均値)2 +・・・+
       (要素n-2 - 平均値)2 + (要素n-1 - 平均値)2  } / n
  標準偏差 = √分散
#include <stdio.h>
#include <math.h>

#define N 10
int data[N] = { 80, 76, 59, 87, 66, 54, 40, 78, 94, 61 };

int main( void )
{
        double heikin, bunsan = 0.0, hensa;
        int goukei = 0;
        int i;
        
        for ( i = 0; i < N; i++ ) {
                goukei = goukei + data[i];
        }
        
        heikin = ( double ) goukei / N;

        for ( i = 0; i < N; i++ ) {
                bunsan = bunsan + ( data[i] - heikin ) * ( data[i] - heikin );
        }
        bunsan = bunsan / N;

        hensa = sqrt( bunsan );
        
        printf( "合計点  : %d\n", goukei );
        printf( "平均点  : %f\n", heikin );
        printf( "分散   : %f\n", bunsan );
        printf( "標準偏差 : %f\n", hensa );
        
        return 0;
}

【問2】

【問1】のグローバル変数を main()関数のローカル変数に書き換えてプログラムを作り直せ。

get_goukei() と get_bunsan() の return型と引数は都合のよいように書き換えよ。

 

【問1】 【問2】の実行結果

合計点  : 695
平均点  : 69.500000
分散   : 243.650000
標準偏差 : 15.609292

解答例戻る


banner初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved