2016-02-25 97 views
0

我正在爲學校的一個程序工作,涉及到查找某些數組的統計數據,我必須找到的其中一個是差異,我有一個功能,但它爲一些原因,它一直返回0功能找到差異返回0

double variance(double * array, unsigned int size, double value) 
{ 
    double variance = 0; //Variable used to store the variance 
    for (unsigned int i = 0; i < size; ++i) 
    { 
     if (value > array[i]) //If statement checks to see if you need to subtract the value from the array or the other way around 
     { 
      variance += pow((value - array[i]), 2); 
     } 
     else 
     { 
      variance += pow((array[i] - value), 2); 
     } 
    } 
    variance /= size; 
    return variance; 
} 

我試着去通過它與調試器,但我想出了什麼

我怎麼把它叫做:

double varaince = variance(array, size, mean); 
printf("\nVariance: %.3lf", variance); 

sample output

+2

請提供[最小完整和可覈實的示例](https://stackoverflow.com/help/mcve)。另外,我覺得很難相信你從調試器中得不到任何東西。如果是這種情況,那麼也許你應該詢問如何使用調試器的幫助。 – kaylum

+2

偏題:不需要if語句,因爲平方差會導致一個正數(即使差爲負數)。關於主題:沒有什麼能夠防止代碼計算差異,所以問題必須出現在未顯示的代碼中。換句話說,我同意@kaylum你需要發佈一個MCVE。 – user3386109

+1

不同的變量名稱:varaince與方差 - printf不輸出變量,但功能方差的地址 –

回答

-2
variance/=size; 

應該對自己的

variance/=(double)size; 

大小存儲爲二進制整數。

+2

由於「方差」是類型'double','size'將會被隱式提升爲'double'。 – EOF

2

作爲@ammoQ評論

double varaince = variance(array, size, mean); 

//       function name used here. 
// printf("\nVariance: %.3lf", variance); 

//      Use variable name 
printf("\nVariance: %.3lf", varaince);