2013-03-21 136 views
-1

我負責打印一組數字的一組數字的平均值和方差,並且我需要對我所做的平均值做一個參考。但我不明白我現在可以打印什麼樣的平均值。當我運行程序時,我正在打印0。這是我的代碼:打印一個ref變量

static double varianceValue(ref double avg, params double[] intValues) 
    { 
     double sum = 0; 
     double f = 0; 
     double number = 0; 
     double sv = 0; 
     double variance= 0; 

     foreach (int value in intValues) 
     { 
      sum += value; 
     } 

     for (int i = 0; i < intValues.Length; i++) 
     { 
      number = intValues[i]; 
      avg = sum/intValues.Length; 
      f = number - avg; 
      sv += Math.Pow(f, 2); 

     } 
     variance = sv/(intValues.Length - 1); 
     return variance; 

    } 
    static void Main(string[] args) 
    { 
     double avg = 0; 
     Console.WriteLine("The avg of the variables in the array are: {0}", varianceValue(ref avg)); 
     Console.WriteLine("\nThe variance of 11, 13, 17, 19, 23 is: {0}", varianceValue(ref avg, 11.0, 13.0, 17.0, 19.0, 23.0)); 
     Console.ReadKey(); 
    } 
+0

單步執行程序。 – 2013-03-21 00:07:23

+0

看起來像你直接分配給'avg'(因此覆蓋它的值),沒有必要將它作爲'ref'參數,而是將它作爲'out'參數或從函數返回一個結構或元組。 – Dai 2013-03-21 00:08:34

+0

另一個不錯的選擇是返回Pair ,平均值和方差的函數。 – Dialecticus 2013-03-21 00:12:34

回答

1

你在這一點上打印爲零,因爲數組是空的,當你調用

Console.WriteLine("The avg of the variables in the array are: {0}", varianceValue(ref avg)); 

首先調用方差函數w /陣列PARAMS(這也將設置AVG)。然後自己調用平均值。

static void Main(string[] args) 
{ 
    double avg = 0; 
    Console.WriteLine("\nThe variance of 11, 13, 17, 19, 23 is: {0}", varianceValue(ref avg, 11.0, 13.0, 17.0, 19.0, 23.0)); 
    Console.WriteLine("The avg of the variables in the array are: {0}", avg); 
    Console.ReadKey(); 
} 
+0

好吧,我感到非常愚蠢。對這個還很新,訂單一定很重要。我對一個非常愚蠢的問題表示歉意。我感謝您花時間幫助我。 – jimjam456 2013-03-21 00:10:28

+0

@ jimjam456如果這有幫助,請確保接受答案。 =] – 2013-03-21 00:11:18

+0

它確實做到了,我會盡快做到。我很困惑,爲什麼我因爲這個問題而獲得負面聲譽。我認識到這是一個非常簡單的答案,但是,我仍然在學習一切。 – jimjam456 2013-03-21 00:13:24