2014-04-19 3 views
0

5 개의 숫자 합계, 평균 및 표준 편차를 계산하기 위해 다음과 같은 프로그램을 만들었습니다. 합계는 정확하지만 0이 나오기 시작합니다. 항상이므로 SD도 잘못되었습니다. .평균이 0이 될 때

#include<stdio.h> 
#include<conio.h> 
#include<math.h> 

int sum(int, int, int, int, int); 
float SD(int, int , int, int,int,int); 
float mean(int); 

int main() 
{ 
    int a,b,c,d,e,m; 
    printf("Enter 5 integers succesively by pressing enter after entering a number.\n"); 
    scanf("%d %d %d %d %d",&a,&b,&c,&d,&e); 
    m=mean(sum(a,b,c,d,e)); 
    printf("\nThe sum is %d , mean is %f and standard deviation is %f",sum(a,b,c,d,e),m,SD(a,b,c,d,e,m)); 
    return 0; 
} 

int sum(int v, int w, int x, int y, int z) 
{ 
    return(v+w+x+y+z); 
} 

float SD(int v, int w, int x, int y, int z,int mm) 
{ 
    float k; 
    k=sqrt(((mm-v)*(mm-v) + (mm-w)*(mm-w) + (mm-x)*(mm-x) + (mm-y)*(mm-y) + (mm-z)*(mm-z))/5); 
    return k; 
} 

float mean(int v) 
{ 
    return (v/5); 
} 

답변

2

나누기 사용시 float 데이터 형식을 사용할 때. mean()SD() 함수는 5으로 나누고 두 피연산자는 모두 int이므로 부동 소수점 중 하나를 변경하십시오. 그렇지 않으면 결과는 int으로 잘립니다.
/5/5.0으로 변경하거나 float 유형 캐스트를 사용할 수 있습니다.

mean 당신이 정수 intm을 정의하기 때문에 0로 받고 그것을 인쇄 할 %f을 사용하고 있습니다.

int a,b,c,d,e,m; 
printf("\nThe sum is %d , mean is %f and standard deviation is %f",sum(a,b,c,d,e),m,SD(a,b,c,d,e,m)); 

mmean 그래서 그것을 float type variable.

int a,b,c,d,e; 
float m; 
을 할 것입니다
0

v/5.으로 변경하십시오.

v5은 모두 int이므로, v/5은 정수로 나뉩니다. 대신에 부동 소수점 나누기를 수행하려고하므로 피연산자 중 하나를 부동 상태로 만들어야하고 5.double 유형의 상수입니다.

동일한 내용이 SD 기능에 적용됩니다.

관련 문제