#include <stdio.h> #include <math.h> #define N 10 int data[N] = { 80, 76, 59, 87, 66, 54, 40, 78, 94, 61 }; int get_goukei( void ); double get_bunsan( double avg ); int main( void ) { double heikin, bunsan, hensa; int goukei; goukei = get_goukei(); heikin = ( double ) goukei / N; bunsan = get_bunsan( heikin ); hensa = sqrt( bunsan ); printf( "合計点 : %d\n", goukei ); printf( "平均点 : %f\n", heikin ); printf( "分散 : %f\n", bunsan ); printf( "標準偏差 : %f\n", hensa ); return 0; } /*** 合計を求める関数 ***/ int get_goukei( void ) { int i, sum = 0; for ( i = 0; i < N; i++ ) { sum = sum + data[i]; } return sum; } /*** 分散を求める関数 ***/ double get_bunsan( double avg ) { int i; double disp = 0.0; for ( i = 0; i < N; i++ ) { disp = disp + ( data[i] - avg ) * ( data[i] - avg ); } return disp / N; }
#include <stdio.h> #include <math.h> #define N 10 int get_goukei( int *p ); double get_bunsan( int *p, double avg ); int main( void ) { double heikin, bunsan, hensa; int goukei; int data[N] = { 80, 76, 59, 87, 66, 54, 40, 78, 94, 61 }; goukei = get_goukei( data ); heikin = ( double ) goukei / N; bunsan = get_bunsan( data, heikin ); hensa = sqrt( bunsan ); printf( "合計点 : %d\n", goukei ); printf( "平均点 : %f\n", heikin ); printf( "分散 : %f\n", bunsan ); printf( "標準偏差 : %f\n", hensa ); return 0; } /*** 合計を求める関数 ***/ int get_goukei( int *p ) { int i, sum = 0; for ( i = 0; i < N; i++ ) { sum = sum + *p; p++; } return sum; } /*** 分散を求める関数 ***/ double get_bunsan( int *p, double avg ) { int i; double disp = 0.0; for ( i = 0; i < N; i++ ) { disp = disp + ( *p - avg ) * ( *p - avg ); p++; } return disp / N; }
※ グローバル変数を用いて各関数共通で配列を参照している【問1】と、 ローカル変数を用いて引数で配列のアドレスを渡している【問2】では、 【問2】の方が関数の独立性が高く、配列data も安全なものになっています。
▼戻る▼
「初心者のためのポイント学習C言語」 Copyright(c) 2000-2004 TOMOJI All Rights Reserved