Задача состоит в том, чтобы позволить пользователю вводить значения от 0 до 100. Если пользователь вводит -99, программа должна остановиться. После выхода из программы необходимо вычислить среднее значение. Однако среднее значение должно включать все введенные значения, кроме самого низкого введенного значения (минимального) и наибольшего введенного значения (максимального). Я написал довольно красивый код, но он выдает IndexOutOfRangeException
.
Вот этот код:
class Program
{
static void Main(string[] args)
{
DisplayApp();
Calculate();
}
static void DisplayApp()
{
Console.WriteLine("Grade Calculator: ");
Console.WriteLine();
}
static double Calculate()
{
Console.WriteLine("Enter grades (-99 to exit): ");
string input = Console.ReadLine();
int[] array1 = new int[] { };
int iInput = int.Parse(input);
int min = 100;
int max = 0;
int i = 0;
int sum = 0;
double average = 0;
while(iInput != 99)
{
if(iInput < min)
{
array1[i] = min;
}
else if(iInput > max)
{
array1[i] = max;
}
sum += iInput - (min + max);
i++;
}
average = (double)sum / i;
return average;
}
}
Как вы думаете, что можно улучшить, чтобы программа работала?