2017-10-04 104 views
0

我似乎無法弄清楚如何顯示值以及每個值與平均值的距離。這裏是我的代碼,但我知道這是不正確的。我一直在試圖讓所有東西都接近它想要的東西。顯示7個整數以及每個平均值距離平均值

這是在線課堂的作業,所以沒有太多的幫助選項。感謝您的任何意見!

int[] temp = new int[7]; 
     int x; 
     string daysString; 
     for (x = 0; x < temp.Length; ++x) 
     { 
      Write("Enter the high temperature for the day: "); 
      daysString = ReadLine(); 
      temp[x] = Convert.ToInt32(daysString); 
     } 
     WriteLine("\n-----------------------------------------"); 
     WriteLine("The high temperature for each of the 7 days you entered: "); 
     for (x = 0; x < temp.Length; ++x) 
      Write("{0, 6}", temp[x]); 

     //Step 3. Compute Average 
     double average = temp.Average(); 
     WriteLine(""); 
     WriteLine("\n-----------------------------------------"); 
     WriteLine("Average = {0}", average); 

     //Step 4. Find out how many numbers in the array are greater than the average. 
     int count = 0; 
     foreach (int i in temp) 
     { 
      if (i > average) count++; 
     } 
     Write("\n----------------------------------------------"); 
     WriteLine(""); 
     WriteLine("How many days away each high temperature is from the average"); 
     WriteLine("{0, 6}", count); 
+0

您還沒有提到的問題,_「我知道這是不正確」 _是不夠的。步驟4似乎不是問題, –

+0

請閱讀[MCVE]關於發佈代碼的指導。 「這是不正確的」對問題的解釋很差。 –

+0

我可以得到平均值,但代碼的底部只顯示一個數字不是7. – JenniferLopez

回答

0

你的最後一個步驟4做不同的東西,你真正想要的是:

多遠都是7個溫度遠離均線?

int[] distancesFromAverage = temp 
    .Select(temperature => (int)Math.Abs(temperature - average)) 
    .ToArray(); 

現在,您可以輸出溫度和平均距離:

for(int i = 0; i < temp.Length; i++) 
    Console.WriteLine($"Temperature: {temp[i]} Distance from average: {distancesFromAverage[i]}"); 
+0

謝謝!代碼現在更接近於答案的要求。現在我只需要讓平均天數不會出現小數位,並且是負數。 – JenniferLopez

+0

使用Math.Abs​​獲得正值並轉換爲int。我編輯了答案 –

+0

如果你想要一個四捨五入的值,把Math.Abs​​調用放在Math.Round –

0

也許我不明白的問題

每個值相差多少的平均

但既然你已經計算出的平均

foreach (int val in temp) 
{ 
    WriteLine(val - average); 
} 

會告訴你你的價值和平均水平之間的差異...

如果你有外的列表基值如評論所說,想知道有多少天,你說值之後目前是

for (int i=0; i<temp.Length; i++) 
{ 
    WriteLine ($"The value {temp[i]} is {i+1} days after the average"); 
} 

平均值不neccesarily包含的值在列表中(3,5和8的平均值是6,這不是列表的一部分),所以你無法真正知道平均值之後的值有多少天。或者你在尋找中位數而不是平均值?然後,您可以對列表進行排序,取中間值,然後查找與該特定值的距離。

+0

這裏是整個問題:一個程序接受7個連續7天代表高溫的int值。顯示每個值以及指示距平均值有多遠的消息。起初我以爲它只是想要平均溫度有多遠,但現在我發現它希望每個溫度輸出與平均溫度有多遠。這就是我對做什麼和做什麼感到困惑的地方。 – JenniferLopez

+0

因此,如果第零天是平均日,且數組包含異常值,則WriteLine($「{temp [i]}的值是平均值後的{i + 1}天」);會這樣做嗎? (這需要定期循環而不是foreach) – Brandtware

+0

謝謝你的幫助! – JenniferLopez