C++ P/Q-Formel berechnen
-
Hallo Leute
Ich habe von der Schule den Auftrag ein Programm zu schreiben, welches die Nullstellen folgender Funktion ausrechnen kann: f(x)=x²+bx+cFolgendes habe ich als Code aufgestellt:
#include "stdafx.h" #include <iostream> #include <cmath> using namespace std; double p; double q; double x1; double x2; double wurzel; int main() { cout << ("Geben Sie bitte den Wert P ein: ") << endl; cin >> p; cout << ("Geben Sie bitte den Wert Q ein: ") << endl; cin >> q; wurzel = sqrt((p / 2) * (p / 2) - q); if (wurzel < 0) { x1 = 0; x2 = 0; } else { x1 = -p / 2 + wurzel; x2 = -p / 2 - wurzel; } cout << ("Nullstelle 1= "); cout << x1 << endl; cout << ("Nullstelle 2= "); cout << x2 << endl; cout << ("Druecken Sie bitte eine beliebige Taste zum beenden!"); system("pause>nul"); return 0; }
Nur wird mir leider WENN der Wurzelwert kleiner als 0 ist, folgendes ausgegeben
Nullstelle 1= -nan(ind) Nullstelle 2= -nan(ind)
Wieso wird dann nicht ausgegeben:
Nullstelle 1= 0 Nullstelle 2= 0
Ich bedanke mich schonmal für eure Hilfe
-
vor dem wurzeln testen, ob (p / 2) * (p / 2) - q kleiner als 0 ist
-
So würde dann das überarbeitete aussehen:
#include "stdafx.h" #include <iostream> #include <cmath> using namespace std; double p; double q; double x1; double x2; double wurzel; char x3; int main() { cout << ("Geben Sie bitte den Wert P ein: ") << endl; cin >> p; cout << ("Geben Sie bitte den Wert Q ein: ") << endl; cin >> q; if ((p / 2) * (p / 2) - q < 0) { cout << ("Keine Nullstellen vorhanden!"); cout << "" << endl; cout << ("Beliebige Taste zum Beenden druecken!"); system("pause>nul"); return 0; } else { wurzel = sqrt((p / 2) * (p / 2) - q); x1 = -p / 2 + wurzel; x2 = -p / 2 - wurzel; } cout << ("Nullstelle 1= "); cout << x1 << endl; cout << ("Nullstelle 2= "); cout << x2 << endl; cout << ("Druecken Sie bitte eine beliebige Taste zum beenden!"); system("pause>nul"); return 0; }