.::ASDF::.
Freizeitschrauber(in)
Hallo Zusammen,
bei meinem Programm rechnet die Funktion "Diskriminante" falsch. Wenn die Rechnung direkt in der "main" steht kommt das richtige raus.
Zum Beispiel für a=1, b=2, c=3 sollte das Ergebnis für die Diskriminante "-8" sein, es wird aber "+4" ausgegeben und bricht nicht bei der if-Bedingung (diskr < 0) ab.
Was habe ich falsch gemacht?
bei meinem Programm rechnet die Funktion "Diskriminante" falsch. Wenn die Rechnung direkt in der "main" steht kommt das richtige raus.
Zum Beispiel für a=1, b=2, c=3 sollte das Ergebnis für die Diskriminante "-8" sein, es wird aber "+4" ausgegeben und bricht nicht bei der if-Bedingung (diskr < 0) ab.
Was habe ich falsch gemacht?
#include <iostream>
#include <cmath>
using namespace std;
double diskriminante();
double a=0, b=0, c=0;
double diskriminante()
{
double diskr;
diskr = pow(b,2)-4*a*c;
return diskr;
}
int main(){
double ergebnis2, ergebnis1, diskr, c, z;
cout <<"Quadratische Gleichung:\n" << endl;
cout <<"a = ? ";
cin >> a;
if (a == 0)
cout << "Keine Loesung (Divison durch Null)" << endl;
else {
cout <<"b = ? ";
cin >> b;
cout <<"c = ? ";
cin >> c;
diskr = diskriminante();
//diskr = pow(b,2)-4*a*c;
if (diskr < 0.0)
cout << "Keine reelen Loesungen" << endl;
else {
ergebnis1 = 1/(2*a)*(-b+sqrt(diskr));
ergebnis2 = 1/(2*a)*(-b-sqrt(diskr));
cout <<"\nLoesung:\n";
cout << "x1 = " << ergebnis1 << endl;
cout << "x2 = " << ergebnis2 << endl;
}
}
//Zur Kontrolle
z= diskriminante();
cout << z<<" z"<< endl;
cout <<diskr<<" diskr"<< endl;
cout <<diskriminante()<< " funk"<<endl;
return 0;
}
. Jetzt rechnet die Funktion so wie sie soll. Die Globalen Variablen habe ich auch entfernt.
.