[ create a new paste ] login | about

Link: http://codepad.org/AfLUlPgb    [ raw code | output | fork ]

C, pasted on May 20:
#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;
}


Output:
1
2
3
4
5
6
7
8
9
10
11
英語平均 60.0
数学平均 73.0
物理平均 77.0
学生1偏差値 25.0
学生2偏差値 50.0
学生3偏差値 62.5
学生4偏差値 56.2
学生5偏差値 56.2
英語-数学相関 -1.0
英語-物理相関 -0.9
数学-物理相関 0.8


Create a new paste based on this one


Comments: