not sure what i am doing wrong.
The requirement for this project is
1)double calculate_deviation (double number, double mean) - Determines the deviation of number from the mean and returns the result. The deviation may be calculated as number - mean.
2)double calculate_variance (double deviation1, double deviation2, double deviation3, double deviation4, double deviation5, int number) - Determines the variance through the calculation: ((deviation1)^2 + (deviation2)^2 + (deviation3)^2 + (deviation4)^2 + (deviation5)^2) / number
3)double calculate_standard_deviation (double variance) - Calculates the standard deviation as sqrt (variance) and returns the result
[FILE WHERE I AM GETTING MY INFORMATION ON]
12345678-student id
3.78-gpa
3-class standing
20.5-age
87654321
2.65
2
19.25
08651234
3.10
1
18.0
11112222
3.95
4
22.5
22223234
2.45
3
19.3333
Code:
[SOURCE.C FILE]
double compute_deviation_gpa(double gpa1, double gpa2, double gpa3, double gpa4, double gpa5,double gpa_mean) {
double deviation_gpa1 = 0.0;
double deviation_gpa2 = 0.0;
double deviation_gpa3 = 0.0;
double deviation_gpa4 = 0.0;
double deviation_gpa5 = 0.0;
deviation_gpa1 = gpa1 - gpa_mean;
deviation_gpa2 = gpa2 - gpa_mean;
deviation_gpa3 = gpa3 - gpa_mean;
deviation_gpa4 = gpa4 - gpa_mean;
deviation_gpa5 = gpa5 - gpa_mean;
return deviation_gpa1;
return deviation_gpa2;
return deviation_gpa3;
return deviation_gpa4;
return deviation_gpa5;
}
double compute_variance(double deviation_gpa1, double deviation_gpa2, double deviation_gpa3, double deviation_gpa4, double deviation_gpa5, double number) {
double variance = 0.0;
number = 5;
((deviation_gpa1*deviation_gpa1) + (deviation_gpa2*deviation_gpa2) + (deviation_gpa3*deviation_gpa3) + (deviation_gpa4*deviation_gpa4) + (deviation_gpa5*deviation_gpa5) / number);
return variance;
}
double compute_standard_deviation(double variance) {
double standard_d = 0.0;
standard_d = sqrt(variance);
return standard_d;
}
[MAIN.C FILE]
compute_deviation = compute_deviation_gpa( gpa1, gpa2, gpa3, gpa4, gpa5, gpa_mean);
compute_variancee = compute_variance(deviation_gpa1, deviation_gpa2, deviation_gpa3, deviation_gpa4, deviation_gpa5, number);
compute_sd = compute_standard_deviation(variance);
fprintf(outfile, "sd %.2lf\n ", compute_sd);
return 0;
whenever i run this, i get zero. I am not sure why.
Any help is appreciated, thank you.
you're going to the power of 2?
letting MATH.H do most of the work.
C library function pow()
this may or may not be right but others in here could gils you better, I'm just raising the point or giving you another means of doing this. the options
Code:
#include <stdio.h>
#include <math.h>
#include <string.h>
double compute_deviation_gpa(double * gpa1, double * gpa2, double * gpa3, double * gpa4, double * gpa5, double * gpa_mean)
{
printf("1::IN C DEVATION %.2lf\n %.2lf\n %.2lf\n %.2lf\n %.2lf\n %.2lf\n", *(double*)gpa1, *(double*)gpa2, *(double*)gpa3, *(double*)gpa4, *(double*)gpa5, *(double*)gpa_mean);
*gpa1 = gpa1 - gpa_mean;
*gpa2 = gpa2 - gpa_mean;
*gpa3 = gpa3 - gpa_mean;
*gpa4 = gpa4 - gpa_mean;
*gpa5 = gpa5 - gpa_mean;
printf("2:: leaving C DEVATION %.2lf\n %.2lf\n %.2lf\n %.2lf\n %.2lf\n %.2lf\n", *(double*)gpa1, *(double*)gpa2, *(double*)gpa3, *(double*)gpa4, *(double*)gpa5, *(double*)gpa_mean);
return 0.0;
}
double compute_variance(double d_gpa1, double d_gpa2, double d_gpa3, double d_gpa4, double d_gpa5)
{
printf("in Compute %f %f %f %f %f \n", d_gpa1, d_gpa2, d_gpa3, d_gpa4, d_gpa5);
// no number needed to be passed into function because it only takes five
printf(" do the math: %f \n", ( ((d_gpa1*d_gpa1) + (d_gpa2*d_gpa2) + (d_gpa3*d_gpa3) + (d_gpa4*d_gpa4) + (d_gpa5*d_gpa5) / 5)) );
// raised to the power of 2 then the total divided by how many to get advarage?
printf("being returned using pow( ) : %f \n", ( (pow(d_gpa1, 2) + pow(d_gpa2,2) + pow(d_gpa3, 2) + pow(d_gpa4,2) + pow(d_gpa5, 2) ) / 5 ));
// shortened it for readability it was too long
// return ( ( ((d_gpa1*d_gpa1) + (d_gpa2*d_gpa2) + (d_gpa3*d_gpa3) + (d_gpa4*d_gpa4) + (d_gpa5*d_gpa5) / 5)) )
return ( (pow(d_gpa1, 2) + pow(d_gpa2,2) + pow(d_gpa3, 2) + pow(d_gpa4,2) + pow(d_gpa5, 2) ) / 5 );
}
double compute_standard_deviation(double variance) {
return ( sqrt(variance) );
}
int main()
{
double gpa1, gpa2,gpa3,gpa4,gpa5, gpa_mean;
gpa1 = 5.3;
gpa2 = 2.3;
gpa3 = 10.3;
gpa4 = 123456782.3;
gpa5 = 2.3;
gpa_mean = 7.0;
double compute_sd;
// printf( "sd %.2lf\n ", compute_sd);
// raised to the power of 2 (deviation3)^2 ???? pow(gpa1,2) ??
compute_deviation_gpa( &gpa1, &gpa2, &gpa3, &gpa4, &gpa5, &gpa_mean);
compute_sd = compute_standard_deviation( compute_variance(gpa1, gpa2, gpa3, gpa4, gpa5) ) ;
printf( "\n@: sd %.2lf\n ", compute_sd);
return 0;
}
Code:
serx@~/bin <> gcc -Wall -lm devation_gpa.c
userx@~/bin <> ./a.out
1::IN C DEVATION 5.30
2.30
10.30
123456782.30
2.30
7.00
2:: leaving C DEVATION 5.00
4.00
3.00
2.00
1.00
7.00
in Compute 5.000000 4.000000 3.000000 2.000000 1.000000
do the math: 54.200000
being returned using pow( ) : 11.000000
@: sd 3.32