2017-10-04 107 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