Simplest Solution
A possible solution is as follows:
using System;
class TempStats
{
public string Description { get; set; }
private double[] temp;
public double[] Temp
{
set
{
bool sortedSoFar = true;
int index = 0;
while (index + 1 < value.Length && sortedSoFar)
{
if (value[index] > value[index + 1])
sortedSoFar = false;
index++;
}
if (!sortedSoFar)
{
throw new ArgumentException(
"Your data is not sorted."
);
}
foreach (double i in value)
{
if (i < -128.6)
{
throw new ArgumentOutOfRangeException(
"That is colder than the coldest ever recorded on Earth!"
);
// https://en.wikipedia.org/wiki/Lowest_temperature_recorded_on_Earth
}
else if (i > 134.1)
{
throw new ArgumentOutOfRangeException(
"That is hotter than the hottest ever recorded on Earth!"
);
// https://en.wikipedia.org/wiki/Highest_temperature_recorded_on_Earth
}
}
temp = value;
}
}
public TempStats(double[] tempP, string desc)
{
Temp = tempP;
Description = desc;
}
public double Average
{
get
{
double acc = 0;
foreach (double i in temp)
{
acc += i;
}
return acc / temp.Length;
}
}
public double Median
{
get
{
if (temp.Length % 2 != 0)
{
return temp[(temp.Length - 1) / 2];
}
else
{
return (
temp[(temp.Length - 1) / 2]
+ temp[temp.Length / 2]
) / 2;
}
}
}
}
You can download it here