#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