Witam, mam problem z programem liczącym pierwiastki równania kwadratowego. Problem pojawia sie w przypadku, gdy delta > 0, wychodzą wtedy dziwne wyniki. Na przykład dla danych a= 1, b=2, c=-3 wychodzi x1= 538444096.000000 i x2 = -538444096.000000.
#include <stdio.h>
#include <math.h>
int main()
{
int a, b, c;
float delta,pierw;
float x, x1, x2;
printf("Podaj wspolczynniki rownania kwadratowego:");
scanf("%d%d%d", &a, &b, &c);
delta = (b * b) - (4 * a * c);
pierw = sqrt(delta);
if (a == 0) {
printf("To nie jest rownanie kwadratowe!");
}
else {
if (delta < 0) {
printf("Brak pierwiastkow!");
}
if (delta == 0) {
x = -b / (2 * a);
printf("%s %f", "Rownanie ma jedno rozwiazanie rowne:", x);
}
if (delta > 0) {
x1 = (-b + pierw) / (2 * a);
x2 = (-b - pierw) / (2 * a);
printf("Rownanie ma dwa rozwiazania:");
printf("%s %f", "x1 = ",x1);
printf("%s %f", " x2 = ",x2);
}
return 0;
}
int main()
etc.).fifi8909