Hi,ich hab folgendes Problem.
Ich hab ein Programm geschrieben um quadratische Gleichungen zu lösen. Es funktioniert im Prinzip so wie es soll. Es löst jede Gleichung richtig und zeigt auch die Diskriminante an. Doch gebe ich die Gleichung 5x² + 14x+ 9,8 = 0 ein, zeigt das Prog etwas völlig falsches an. Die Diskriminante ist bei der Gleichung 0, doch es wird -1,0... angezeigt. Ich weiß nicht ob bei anderen Gleichungen der gleiche Fehler auftritt, denn bis jetzt klappte es nur bei der Gleichung nicht. Hat jemand eine Lösung für mein Problem? Ich bin auch schon mein Code durchgegangen aber ich kann meinerseits keinen Fehler entdecken.
Ich hab ein Programm geschrieben um quadratische Gleichungen zu lösen. Es funktioniert im Prinzip so wie es soll. Es löst jede Gleichung richtig und zeigt auch die Diskriminante an. Doch gebe ich die Gleichung 5x² + 14x+ 9,8 = 0 ein, zeigt das Prog etwas völlig falsches an. Die Diskriminante ist bei der Gleichung 0, doch es wird -1,0... angezeigt. Ich weiß nicht ob bei anderen Gleichungen der gleiche Fehler auftritt, denn bis jetzt klappte es nur bei der Gleichung nicht. Hat jemand eine Lösung für mein Problem? Ich bin auch schon mein Code durchgegangen aber ich kann meinerseits keinen Fehler entdecken.
Code:
#include <iostream>
#include <conio.h>
#include <cmath>
using namespace std;
long double a,a1,p,p1,q,q1,d,x1,x2;
int main()
{
while (bool i = 1)
{
cout << "Programm zur L\x94sung quadratischer Gleichungen der Form"
<< endl << "a x ^ 2 + b x + c = 0";
cout << endl
<< endl
<< "© 2006 Oliver Sabiniarz"
<< endl
<< endl << " Geben sie a ein: "
<< endl << " a = ";
cin >> a;//5
cout << endl
<< endl << " Geben sie b ein: "
<< endl << " b = ";
cin >> p;//14
cout << endl
<< endl << " Geben sie c ein: "
<< endl << " c = ";
cin >> q;//9.8
a1 = a;//a1=5
a = a / a1;//a=1
p1 = p / a1;//p1=2.8
q1 = q / a1;//q1=1.96
d = pow((p1 / 2), 2)-q1;//d=0
if (a1 != 1)//true
{
cout
<< endl << a1 << " x ^ 2 + " << p << " x + " << q << " = 0 <=> " << "x ^ 2 + " << p1 << " x + " << q1 << " = 0";//Ausgabe: 5x^2+14x+9.8=0<=>x^2+2.8+1.96=0
}
cout << endl <<"Diskriminante = " << d << endl;//Diskriminante = 0
if (d > 0)
{
x1 = -p1 / 2 - sqrt(d);
x2 = -p1 / 2 + sqrt(d);
cout << endl <<"x1 = " << x1
<< endl <<"x2 = " << x2;
}
else if (d==0)
{
x2 = -p1 / 2 + sqrt(d);
cout << endl << "x = " << x2;
}
else if (d < 0)
{
d=-d;
cout << endl <<"x1 = " << -p1 / 2 << " + " << sqrt(d) << " i"
<< endl <<"x2 = " << -p1 / 2 << " - " << sqrt(d) << " i";
}
cout << endl << endl << "Auf Wiedersehen!" << endl << endl << endl;
getch();
}
}