最大・最小・平均・標準偏差の計算

最大・最小値をデータの並び替えにより行っています。単純に大小の比較だけでもできます。

最大・最小・平均・標準偏差の計算(list_11.c)
#include <stdio.h>
#include <math.h>

#define DATA_N 10
//-----------------------------------------------------------------
void swapvalue(double *v1,double *v2);
void simple_sort(double* a,int n);
double calc_sd(double* a,int n);
double calc_mean(double* a,int n);
//-----------------------------------------------------------------

int main()
{
    int i;
    double a[DATA_N];
    // input datas
    printf("input %ds value:\n",DATA_N);
    for(i=0;i<DATA_N;i++){
        printf("[%d]:",i+1);
        scanf("%lf",&a[i]);
    }
    simple_sort(a,DATA_N);
    // display
    printf("max  value = %lf\n",a[DATA_N-1]);
    printf("min  value = %lf\n",a[0]);
    printf("mean value = %lf\n",calc_mean(a,DATA_N));
    printf("SD   value = %lf\n",calc_sd(a,DATA_N));
    return 0;
}
//-----------------------------------------------------------------
// Swap values
//-----------------------------------------------------------------
void swapvalue(double *v1,double *v2)
{
    double tmp=*v2; *v2=*v1; *v1=tmp;
}
//-----------------------------------------------------------------
// Simple Sorting Algorithm
//-----------------------------------------------------------------
void simple_sort(double* a,int n)
{
    int i,j;
    for(i=0;i<n;i++) for(j=i;j<n;j++){
        if(a[j]<a[i]) swapvalue(&a[j],&a[i]);
    }
}
//-----------------------------------------------------------------
// Calc Standard Deviation
//-----------------------------------------------------------------
double calc_sd(double* a,int n)
{
    int i;
    double mean=calc_mean(a,n);
    double sd=0;
    for(i=0;i<n;i++) sd += pow(a[i]-mean,2);
    sd/=(double)n;
    return sqrt(sd);
}
//-----------------------------------------------------------------
//  Calc mean value
//-----------------------------------------------------------------
double calc_mean(double* a,int n)
{
    int i;
    double mean=0;
    for(i=0;i<n;i++) mean += a[i];
    mean/=n;
    return mean;
}

result
Gami[390]% ./list_11.exe
input 10s value:
[1]:3
[2]:4
[3]:2.3
[4]:3.1
[5]:9.1
[6]:5.3
[7]:6.7
[8]:6.1
[9]:2.8
[10]:8.2
max  value = 9.100000
min  value = 2.300000
mean value = 5.060000
SD   value = 2.279123
Gami[391]%
inserted by FC2 system