Минимальное и максимальное значение C #

c#

#c#

Вопрос:

Моя задача такова: данные о росте N учащихся в классе вводятся по очереди. Определите средний, минимальный и максимальный рост учащихся в группе.

Я написал такое решение, но программа некорректно выводит максимальное и минимальное значения.

 Console.Write("Number of students in the group = ");
int n = Convert.ToInt32(Console.ReadLine());

double result = 0;
double min = 0;
double max = 0;
for (double i = 0.0; i < n; i  )
{
    Console.Write("The height of {0} student (in cm):  ", i   1);
    double h = Convert.ToDouble(Console.ReadLine());
    result  = h;
    if (max > h) max = h;
    if (h < max) min = h;
}
double average = 0;
average = result / n;
Console.WriteLine("Average value = "   average);
Console.WriteLine("Maximum value = "   max);
Console.WriteLine("Minimun value = "   min);
 

Вывод:

введите описание изображения здесь

Что я могу сделать, чтобы исправить это?

Комментарии:

1. if (max > h) max = h; не имеет смысла: разве вы не предпочли бы изменить max , когда h больше, чем max , а не наоборот? Однако следующая строка — чистая опечатка: вы имели в виду сравнение h с min , а не с max , перед назначением min .

2. Я предлагаю вам ознакомиться с отладчиком Visual studio. Это помогло бы вам обнаружить логическую ошибку. Сергей здесь прав.

3. Использовать бесплатный встроенный пошаговый отладчик для отладки вашего кода проще, чем вы думаете. Это также поможет вам узнать, как выполняется код, что поможет вам написать лучший код.

4. «если max больше h, установите max равным h» «если h меньше max, установите min равным h». Правильно ли это звучит для вас?

5. Совет; если вы хотите найти максимум, начните с абсолютного минимума и продолжайте. Если вы хотите найти минимум, начните с абсолютного максимума и работайте вниз. double.MinValue и double.MaxValue являются константами, запрограммированными в c #, которые полезны для таких целей. Все числовые типы имеют эти константы. 0 находится в середине всего возможного диапазона значений со знаком, поэтому не всегда является отличным выбором

Ответ №1:

if (h < max) min = h; является ошибкой, поскольку в начале все значения = 0, и поскольку высота никогда не будет меньше 0 и никогда не будет истинной, а min останется 0 навсегда.

if (max> h) max = h; также не имеет особого смысла по той же причине. Max в начале равно 0, поэтому оно никогда не будет истинным, а max навсегда будет равен 0.

Попробуйте это

 static void Main()
{
    Console.Write("Number of students in the group = ");
    int n = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine(n.ToString());
    double result = 0;
    double min = 0;
    double max = 0;
    for (var i = 0; i < n; i  )
    {
        Console.Write("The height of {0} student (in cm):  ", i   1);
        double h = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine(h.ToString());
        result  = h;
        if (h > max) max = h;
        if ( min==0 || h < min) min = h;
    }
    double average = result / n;
    Console.WriteLine("Average height = "   average);
    Console.WriteLine("Maximum height = "   max);
    Console.WriteLine("Minimun heignt = "   min);
}
 

вывод

 Number of students in the group = 5
The height of 1 student (in cm):  140
The height of 2 student (in cm):  150
The height of 3 student (in cm):  130
The height of 4 student (in cm):  170
The height of 5 student (in cm):  165
Average heignt = 151
Maximum heignt = 170
Minimun heignt = 130
 

Комментарии:

1. Да, но не делайте за них домашнюю работу..