#include <stdio.h>
#include <math.h>
//名前 点数
// 英語 数学 物理
//学生1 80 50 60
//学生2 60 70 80
//学生3 50 80 90
//学生4 60 75 80
//学生5 50 90 75
const int gW=3;
const int gH=5;
double kamokuAvr(int a[],int kamoku)
{
int i;
int sum=0;
for(i=0; i< gH;++i)
{
sum+=a[i*gW+kamoku];
}
return (double)sum / gH;
}
double avr(int a[])
{
int i,j;
int sum=0;
for(i=0; i<gH; ++i){
for(j=0; j < gW; ++j){
sum+=a[i*gW+j];
}
}
return (double)sum / gH;
}
double hensa(int a[],double avr)
{
int i,j;
double h=0.0;
double k=0.0;
for(i=0; i<gH; ++i){
for(j=0; j < gW; ++j){
k+=a[i*gW+j];
}
h+=sqrt(pow(avr-k,2.0));
k=0.0;
}
return h / (double)gH;
}
double hensachi(int a[],double h,int gakusei,double avr)
{
int i;
double sum=0.0;
for(i=0; i < gW; ++i){
sum+=a[gakusei*gW+i];
}
return 10.0*(sum - avr)/h + 50.0;
}
double sokan(int a[],int k0,int k1)
{
int i;
double sum0=0;
double sum1=0;
for(i=0; i<gH; ++i){
sum0+=(a[i*gW+k0]-kamokuAvr(a,k0))*(a[i*gW+k1]-kamokuAvr(a,k1));
sum1+=sqrt(pow((a[i*gW+k0]-kamokuAvr(a,k0)),2.0))*sqrt(pow((a[i*gW+k1]-kamokuAvr(a,k1)),2.0));
}
return sum0 / sum1;
}
int main()
{
int a[] = {80,50,60,60,70,80,50,80,90,60,75,80,50,90,75};
double av = avr(a);
double h = hensa(a, av);
int i;
printf("英語平均 %.1f\n",kamokuAvr(a,0));
printf("数学平均 %.1f\n",kamokuAvr(a,1));
printf("物理平均 %.1f\n",kamokuAvr(a,2));
for(i=0; i< gH; ++i){
printf("学生%d偏差値 %.1f\n",i+1,hensachi(a,h,i,av));
}
printf("英語-数学相関 %.1f\n",sokan(a,0,1));
printf("英語-物理相関 %.1f\n",sokan(a,0,2));
printf("数学-物理相関 %.1f\n",sokan(a,1,2));
return 0;
}