Есть ли другой способ записи решения этой функции при помощи оператора if?

using System;

namespace индивидуальное
{
    class Program
    {
        static void Main(string[] args)
        {
            // обЪявляем все нам нужные переменные
            Console.Write(" введите x = ");
            double x = Convert.ToDouble(Console.ReadLine());
            Console.Write(" введите y = ");
            double y = Convert.ToDouble(Console.ReadLine());
            Console.Write(" введите z = ");
            double z = Convert.ToDouble(Console.ReadLine());
            double max = 0, min = 0;
            // используем функцию if чтобы найти min и max 
            if (Math.Pow(x,2) > Math.Pow(y,2) && Math.Pow(x, 2) > (x * z)) 
            {
                max = Math.Pow(x, 2);
                if (x < y)
                {
                    min = x;
                }
                // если if не верно то используется условие else
                else
                {
                    min = y;
                }
                Console.WriteLine($" min = {min} max = {max}");
                double F = (max + x) / ((min * min) - y);
                Console.WriteLine($" F = {F:F3}");
            }
            else if (Math.Pow(y,2) > Math.Pow(x,2) && Math.Pow(y,2) > (x * z))
            {
                max = Math.Pow(y, 2);
                if (x < y)
                {
                    min = x;
                }
                else
                {
                    min = y;
                }
                Console.WriteLine($" min = {min} max = {max}");
                double F = (max + x) / ((min * min) - y);
                Console.WriteLine($" F = {F:F3}");
            }
            else if ((x * z) > Math.Pow(y,2) && (x * z) > Math.Pow(x,2))
            {
                max = (x * z);
                if (x < y)
                {
                    min = x;
                }
                else
                {
                    min = y;
                }
                Console.WriteLine($" min = {min} max = {max}");
                double F = (max + x) / ((min * min) - y);
                Console.WriteLine($" F = {F:F3}");
            }
            else
            {
                Console.WriteLine(" Выражение введено некорректно!");
                Console.WriteLine(" Так как нам надо найти min  и max, переменные (x,y,z) должны быть больше или меньше друг друга...!");
            }
            Console.ReadKey(true);
        }
    }
}

Вот функция, надо найти в ней min и max и подставить их в функцию, и естественно решить её.
[1]: https://i.stack.imgur.com/Dpnen.png
Я написал программу которая решает это функцию(все работает), но преподаватель сказал что в ней много каши, и вообще ее можно было написать короче ....


Ответы (1 шт):

Автор решения: aepot

А точно нужно писать вот это вот все, если квадраты равны?

Предлагаю вот так:

static void Main(string[] args)
{
    // обЪявляем все нам нужные переменные
    Console.Write(" введите x = ");
    double x = double.Parse(Console.ReadLine());
    Console.Write(" введите y = ");
    double y = double.Parse(Console.ReadLine());
    Console.Write(" введите z = ");
    double z = double.Parse(Console.ReadLine());

    double max = Math.Max(x * x, Math.Max(y * y, x * z));
    double min = Math.Min(x, y);

    Console.WriteLine($" min = {min}, max = {max}");
    double F = (max + x) / (min * min - y);

    if (double.IsInfinity(F) || double.IsNaN(F))
        Console.WriteLine(" Деление на ноль");
    else
        Console.WriteLine($" F = {F:F3}");

    Console.ReadKey(true);
}
→ Ссылка