C++ quadratische Gleichung nach Vorgaben lösen

huwul

Grünschnabel
Hallo zusammen,

ich muss für einen Info-Kurs unter folgenden Vorgaben eine quadratische Gleichung lösen:

bei a = 0 Ausgabe : Keine Division durch 0 möglich
ist die Diskriminante D= b²-4ac < 0 dann Ausgabe: keine Lösung in reellen Zahlen

für a != 0 gilt : x1= 1/2a * (-b + (b²-4ac)¹/²) , x2= 1/2a * (-b - (b²-4ac)¹/²)


mein Quellcode:

Code:
#include <iostream>
#include <cmath>
//#include <libmath>
using namespace std;

int main()
{
    double a,b,c,x1,x2,wurzel,eins=1,zwei=2,vier=4;
    cout << "Geben sie ihre Werte für die Gleichung ax²+bx+c=0 zur Berechnung ein" << endl;
    cout << " a = " << endl;
    cin >> a;
    if ( a == 0 )
    {
        cout << " Division durch 0 nicht möglich " << endl;
    }
    else
    {
    cout << " b = " << endl;
    cin >> b;
    cout << " c = " << endl;
    cin >> c;
    wurzel = b*b-vier*a*c;
   
   

        if ( wurzel < 0 )
        {
            cout << " Keine reellen Lösungen! " << endl;
        }
        else
        {
            x1=(eins/zwei*a) * ( -b + sqrt( wurzel));
            x2=(eins/zwei*a) * ( -b - sqrt( wurzel));
            cout << " Lösung 1 : " << x1 << endl;
            cout << " Lösung 2 : " << x2 << endl;
        }
    }





}

vorgegeben sind Testläufe mit a= 1 b = 2 c = -3, a = 4 b = 8 c = 0, a = 0, a = 1 b=2 c=3;

soweit so gut, funktioniert das bei mir alles wunderbar außer für a = 4 b = 8 c = 0, da erhalte ich richtigerweise für x1 = 0 und für x2 allerdings = -32


Ich hoffe ihr könnt mir einen guten Ratschlag geben.

MfG
 
Hi

zuerst etwas Prinzipielles:
Für 0 = a^2 x + bx + c ist es bei a=0 egal, ob man durch 0 dividieren kann oder nicht.
Eine Lösung ist deswegen nicht automatisch unmöglich.

Und warum hast du für die Zahlen 1,2,4 extra Variablen?
 
es ist aber in der vorgegebenen x1 & x2 Lösung nicht möglich dass a = 0 ist.

Ich musste den Konstanten irgendwie extra Variablen zulegen, da sonst eine völlig falsche Berechnung durchgeführt wurde.
 
Ein Problem: Der Teil 1/2a in der Formel, der meint 1/(2*a) aber nicht 1/2*a (was das Selbe wie 1*a/2 wäre).
Klammern setzen, Problem gelöst.

Und zu den Konstanten: Es könnte Probleme, geben, weil die Nummern als ints (also ganze Zahlen) verstanden werden
und eine Rechnung mit zwei ints auch ein int als Ergebnis hat (Kommazahlen werden "abgeschnitten").
Nimm 1.0 statt 1 als Zahl, und 2.0 und 4.0, dann gehts auch ohne Variablen.
 
> es ist aber in der vorgegebenen x1 & x2 Lösung nicht möglich dass a = 0 ist.
Ja und? Anstatt einen Fehler auszugeben löst du einfach die lineare Gleichnung und hast nur ein Ergebniss.

a und b=0 wäre ein Grund für eine Fehlermeldung.
 
Das Thema ist nun doch schon älter... Ich glaube nicht, dass huwul noch Hilfe bei diesem Problem braucht.
Ja und? Anstatt einen Fehler auszugeben löst du einfach die lineare Gleich[n]ung und hast nur ein Ergebnis(s)
Lies dir doch nochmals die Vorgaben durch:
ich muss für einen Info-Kurs unter folgenden Vorgaben eine quadratische Gleichung lösen:

bei a = 0 Ausgabe : Keine Division durch 0 möglich
ist die Diskriminante D= b²-4ac < 0 dann Ausgabe: keine Lösung in reellen Zahlen
Natürlich hast du Recht, dass man die Gleichung dennoch auflösen kann. Das war aber nicht die Aufgabe.

Gruss
cwriter
 

Neue Beiträge

Zurück