GIP 2
Freitag, Oktober 19th, 2007Schreiben Sie ein Programm zur Lösung der quadratischen Gleichung ax2 + bx + c = 0
Die Koeffizienten a, b und c sollen von der Tastatur eingelesen werden. Ist die Diskriminante (b2 -4ac) negativ, gebe man den Text „Keine reellen Loesungen“ auf dem Bildschirm aus. Ist die Diskriminante nicht negativ, berechne man die Lösungswerte x1 sowie x2 und gebe sie auf dem Bildschirm aus.
Für a ≠0 gilt:
…
Hinweise:
- Überlegen Sie, welchen Datentyp die Variablen haben sollten.
- Denken Sie daran, dass auch Zahlenkonstanten (wie 1, 2 oder 4) einen passenden
- Berechnen Sie zuerst die Diskriminante und speichern Sie das Ergebnis in einer Variablen. Prüfen Sie danach, ob die Diskriminante nicht negativ ist und berechnen Sie nur in diesem Fall die Wurzel. Sonst geben Sie die Meldung laut Aufgabenstellung aus.
- Die Funktion
double sqrt(double x)
liefert die Quadratwurzel von x. Sie ist in der Datei <math.h> deklariert. Diese muss also mit include eingebunden werden. Für den Eingabewert a=0 muss die Division durch Null abgefangen werden, vgl. Testlauf 4!
Datentyp haben müssen.
Testdaten:
- a=1, b=2, c=-3
- a=4, b=8, c=0
- a=1, b=2, c=3
- a=0, b=8, c=4
#include
#include
using namespace std;
int main (void)
{
int a=0, b=0, c=0, term1=0;
double x1=0, x2=0;
cout << "Loesung der quadratischen Gleichung" << endl;
cout << "a = ? ";
cin >> a;
if(a == 0)
{
cout << "Keine Loesung (Division durch Null)" << endl;
return 0;
}
cout << "b = ? ";
cin >> b;
cout << "c = ? ";
cin >> c;
term1 = ( b * b ) - ( 4 * a * c);
if(term1 < 0)
{
cout << "Keine reellen Loesungen" << endl;
return 0;
}
x1 = (1.0 / (2.0 * (double)a ) ) * ( (double)(b * -1) + sqrt( term1 ) );
x2 = (1.0 / (2.0 * (double)a ) ) * ( (double)(b * -1) - sqrt( term1 ) );
cout << "Loesung: " << endl << "x1 = " << x1 << endl << "x2 = " << x2 << endl << endl;
return 0;
}