Мне нужно написать простую программу, которая может найти корни для квадратного уравнения (ax ^ 2 + bx + c), введя значения a, b и c и используя оператор if-else. Программа может компилироваться, но ответы вышли совершенно неверными. мои типы данных для всех моих входов и выходов двойные
Я пытался посмотреть на свои формулы, но, похоже, с ними все в порядке?
printf("input values of a, b, c: ");
scanf("%lf, %lf, %lf", &a, &b, &c);
disc = pow(b, 2) - (4 * a*c);
if (a == 0)
{
r = -c / b;
printf("x = %.2lf\n", r);
}
else if (disc >= 1)
{
r1 = (-b + sqrt(disc)) / (2 * a);
r2 = (-b - sqrt(disc)) / (2 * a);
printf("x1 = %.2lf and x2 = %.2lf", r1, r2);
}
else if (disc == 0)
{
r1 = (-b + sqrt(disc)) / (2 * a);
r2 = r1;
printf("2 of the same root, x = %.2lf", r2);
}
else
{
printf("no real root");
}
например, когда я ввожу 2, -11 и 12 в качестве a, b и c, ответ, который должен отображаться, будет «x1 = 4.00 и x2 = 1.50», но вместо этого вывод, который я получил, был «х1 = 0,00 и х2 = 0,00». И даже для первого условия я ввел 0, 3 и 6, ожидая, что результат будет 'x = -2.00', но вместо этого я получил 'x = -1.00'.