Объясните пожалуйста задачу?
Дана задача с таким условием как на скриншоте

я начал шерстить интернет при каких условиях Х кривая принимает минимальное значение. я так понял при а > 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 шт):
- Вы возвращаете
a.ToString(), а нужно возвращать минимальное значениеx(вершину параболы), то естьreturn x.ToString() - Вы пишите
x = -b / 2 * aи сначала произойдет деление-b / 2, а потом умножение наa. А формула вершины параболыx = -b / (2 * a) - А ну и в теле
elseнужно вернутьImpossible, а не написать, а потом еще вернутьa.ToString(), чтобы напечатать еще одну строчку
Это же просто квадратное уравнение? Нужно найти вершину параболы? Вы считаете корни при условии, что дискриминант равен нулю, ок, допустим, но ваш код содержит ошибки:
- Что выведется в консоль при
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";
}
}