Объясните пожалуйста задачу?

Дана задача с таким условием как на скриншоте Условие задачи

я начал шерстить интернет при каких условиях Х кривая принимает минимальное значение. я так понял при а > 0. при таком условии выполняется вычисление по формуле x = -b / 2a; вообщем попробовал сделать вычисление

private static string GetMinX(int a, int b, int c)
        {
            int x;
            
            if (a > 0)
            { 
              x = -b / 2 * a;
            }
            else
            {
                Console.WriteLine("Impossible");
            }
            return a.ToString(); // так можно вернуть строковое представление числа

        }
        static void Main(string[] args)
        {
            Console.WriteLine(GetMinX(1, 2, 3));
            Console.WriteLine(GetMinX(0, 3, 2));
            Console.WriteLine(GetMinX(1, -2, -3));
            Console.WriteLine(GetMinX(5, 2, 1));
            Console.WriteLine(GetMinX(4, 3, 2));
            Console.WriteLine(GetMinX(0, 4, 5));

            // А в этих случаях решение существует:
            Console.WriteLine(GetMinX(0, 0, 2) != "Impossible");
            Console.WriteLine(GetMinX(0, 0, 0) != "Impossible");

но в итоге ответ получается не тот который должен быть Вывод

В ЧЕМ ПОДВОХ? ИЛИ ЧТО Я НЕ ПРАВИЛЬНО ВЫЧИСЛЯЮ?


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

Автор решения: Павел Ериков
  1. Вы возвращаете a.ToString(), а нужно возвращать минимальное значение x (вершину параболы), то есть return x.ToString()
  2. Вы пишите x = -b / 2 * a и сначала произойдет деление -b / 2, а потом умножение на a. А формула вершины параболы x = -b / (2 * a)
  3. А ну и в теле else нужно вернуть Impossible, а не написать, а потом еще вернуть a.ToString(), чтобы напечатать еще одну строчку
→ Ссылка
Автор решения: aepot

Это же просто квадратное уравнение? Нужно найти вершину параболы? Вы считаете корни при условии, что дискриминант равен нулю, ок, допустим, но ваш код содержит ошибки:

  • Что выведется в консоль при a > 0? У вас выводится a.
  • Что выведется, если a <= 0, у вас выведется Impossible, а затем a, то есть сразу 2 строки. Угадайте, почему.

Вас учили использовать отладку, ставить точку останова? У вас есть Visual Studio? Вы же могли просто запустить и проверить пример локально с пошаговым выполнением кода? Это бы ответило на все ваши вопросы. Отладка C# кода в Visual Studio.

А метод, должен выглядеть вот так.

private static string GetMinX(int a, int b, int c)
{
    if (a > 0 || b == 0)
    { 
        double x = (double)-b / (2 * a);
        return x.ToString();
    }
    else
    {
        return "Impossible";
    }
}
→ Ссылка