У меня есть задание для вычисления корней квадратных уравнений в C, должно быть довольно просто, и я знаю, что мне нужно делать с программой, но, тем не менее, у меня возникла проблема.Это прекрасно работает, когда корни мнимые, и когда член внутри квадратного корня равен нулю.
Но когда я ввожу коэффициенты a, b и c, которые дают реальные корни, это дает мне неправильный ответ, и я не могувыяснить, что не так.(Я тестирую его с a = 2, b = -5 и c = 1)
Это мой код, он компилируется и запускается, но дает неправильный ответ.
#include<stdio.h>
#include<math.h>
int main()
{
float a, b, c, D, x, x1, x2, y, xi;
printf("Please enter a:\n");
scanf("%f", &a);
printf("Please enter b:\n");
scanf("%f",&b);
printf("Please enter c:\n");
scanf("%f", &c);
printf("The numbers you entered are: a = %f, b = %f, c = %f\n", a, b, c);
D = b*b-4.0*a*c;
printf("D = %f\n", D);
if(D > 0){
x1 = (-b + sqrt(D))/2*a;
x2 = ((-b) - sqrt(D))/2*a;
printf("The two real roots are x1=%fl and x2 = %fl\n", x1, x2);
}
if(D == 0){
x = (-b)/(2*a);
printf("There are two identical roots to this equation, the value of which is: %fl\n", x);
}
if (D<0){
y = sqrt(fabs(D))/(2*a);
xi = (-b)/(2*a);
printf("This equation has imaginary roots which are %fl +/- %fli, where i is the square root of -1.\n", xi, y);
}
return 0;
}