Cześć,
napisałem na zaliczenie program liczący równanie kwadratowe. Program sprawdziłem kilkudziesięcioma przykładami, wszystkie wyniki wyszły poprawne. Od prowadzącego zajęcia dowiedziałem się, że w programie jest jeden błąd, który podobno mogę sprawdzić podając a > 1. Co tu może być nie tak?
#include <iostream>
#include <conio.h>
using namespace std;
float a, b, c, x, x0, x1, x2, delta;
int main()
{
cout << "Podaj a" << endl;
cin >> a;
cout << "Podaj b" << endl;
cin >> b;
cout << "Podaj c" << endl;
cin >> c;
if (a == 0)
{
if (b == 0)
{
if (c == 0)
{
cout << "0 = 0 - rownanie ma nieskonczenie wiele rozwiazan" << endl;
}
else
{
cout << "c =/= 0 - rownanie sprzeczne" << endl;
}
}
else
{
x = -c / b;
cout << "Rozwiazaniem rownania jest x = " << x << endl;
}
}
else
{
delta = (b*b) - (4*a*c);
if (delta < 0)
{
cout << "Brak rozwiazan rzeczywistych, rozwiazaniem sa pierwiastki liczb zespolonych z1 i z2";
}
else
{
if (delta == 0)
{
x0 = -b / (2 * a);
cout << "Rozwiazaniem rownania jest x0 = " << x0 << endl;
}
else
{
x1 = (-b - sqrt(delta)) / (2 * a);
x2 = (-b + sqrt(delta)) / (2 * a);
cout << "Rozwiazaniem rownania sa x1 i x2 = " << x1 << " i " << x2 << endl;
}
}
}
_getch();
return 0;
}
Będę wdzięczny za pomoc.