如何创建排除最低温度并计算平均温度的方法.我只想要一个提示,而不是完整的解决方案,因为我想自己解决我的编程问题.我只有大约10个班级…评论人们的评论我的教授没有讲课,我读过我的书多次回顾过它.
我让这个程序从用户那里拿一个号码.该数字将添加到数组中.该数组用于创建类Temp的实例以打印最低和最高临时值.
- class Program
- {
- static void Main(string[] args)
- {
- Console.Write("Enter a Temperature in Degrees:");
- string n = Console.ReadLine();
- int number = Convert.ToInt32( n);
- Temp t = new Temp(100,52,98,30,11,54,number);
- Console.WriteLine("Lowest Temperature:{0}",t.lowest());
- Console.WriteLine("Highest Temperature: {0}",t.highest());
- Console.WriteLine("Average Temperature: {0}",t.Average());
- }
- public class Temp
- {
- private int[] temp = new int[7]; // array
- public Temp(int d1,int d2,int d3,int d4,int d5,int d6,int d7) // constructor with 7 parameters
- {
- temp[0] = d1; // assigning constructor parameters to array
- temp[1] = d2;
- temp[2] = d3;
- temp[3] = d4;
- temp[4] = d5;
- temp[5] = d6;
- temp[6] = d7;
- }
- public int lowest() // returning the lowest value of the set of numbers
- {
- int smallest = 150;
- for (int c = 0; c < 7; c++)
- {
- if (temp[c] < smallest)
- {
- smallest = temp[c];
- }
- }
- return smallest;
- }
- public int highest()
- {
- int highest = -1;
- for (int c = 0; c < 7; c++)
- {
- if (temp[c] > highest)
- {
- highest = temp[c];
- }
- }
- return highest;
- }
- public double Average()
- {
- double average = 0;
- for (int c = 0; c < 7; c++)
- {
- }
- return average;
- }
- }
- }
解决方法
使用单个循环非常容易:
- public double Average()
- {
- // Initialize smallest with the first value.
- // The loop will find the *real* smallest value.
- int smallest = temp[0];
- // To calculate the average,we need to find the sum of all our temperatures,// except the smallest.
- int sum = temp[0];
- // The loop does two things:
- // 1. Adds all of the values.
- // 2. Determines the smallest value.
- for (int c = 1; c < temp.Length; ++c)
- {
- if (temp[c] < smallest)
- {
- smallest = temp[c];
- }
- sum += temp[c];
- }
- // The computed sum includes all of the values.
- // Subtract the smallest.
- sum -= smallest;
- double avg = 0;
- // and divide by (Length - 1)
- // The check here makes sure that we don't divide by 0!
- if (temp.Length > 1)
- {
- avg = (double)sum/(temp.Length-1);
- }
- return avg;
- }