C++ Rechnen #IND ?

Stephan Liebig

Erfahrenes Mitglied
Hallo, ich habe ein kleines Problem. Ich möchte in C++ die pq-Formel realisieren. Allerdings gibt er mir für x1 und x2 immer -1.#IND.

Woran liegt das?

Variablen:
Code:
//Variablen fuer die pq-Formel
	float p(0), q(0), wurzel_erg(0), nwurzel_erg(0), x0(0), a0(0);
	float x1(0), x2(0);
	bool pq_wiederholen;


Code:
do {
			cout << "  Bitte geben Sie die Zahlen fuer p und q ein.\n";
			cout << "  p = ";
			cin >> p;
			cout << endl;
			cout << "  q = ";
			cin >> q;
			nwurzel_erg = (p/2)*(-1);
			wurzel_erg = ((p/2)*(p/2)) - q;
			if(wurzel_erg < 0)
				{
				cout << "SYSTEM: Der Wurzelausdruck wurde negativ! \n";
				cout << "Erneute eingabe? Ja = 1 / Nein = 0 \n";
				cout << "Ihre Eingabe: ";
				cin >> pq_wiederholen;
				}
			else
				{
				wurzel_erg = x0;
				x0 = a0;
				do 
					{
					x0=x0-(x0*x0-a0)/(2*x0);
					}
				while ( abs (x0*x0-a0)>genauigkeit );
				x1 = nwurzel_erg + x0;
				x2 = nwurzel_erg - x0;
				cout << "Die Nullstellen von x^2 + " << p <<"x + " << q << " = 0 ist:\n";
				cout << "nwurzel_erg = " << nwurzel_erg << endl;
				cout << "wurzel_erg = " << wurzel_erg << endl;
				cout << "x1 = " << x1 << endl;
				cout << "x2 = " << x2 << endl;
				cout << endl;
			        cout << "Programm wiederholen?";
			        cin >> pq_wiederholen;
                                }
			}
			while(pq_wiederholen == true);

Dabei sollte ich vielleicht kurz sagen, wass passiert.
Als erstes gibt man eine Zahl für p und q ein, damit eine Gleichung ensteht.
Ich habe die Formel x1/2 = -(p/2) +- wurzel( (p/2)² - q ) aufgeteilt in 3 Teile.
Einmal das -(p/2), das ergebnis wird in nwurzel_erg gespeichert. Dann wird das unter der Wurzel berechnet. Sprich (p/2)²-q. Das Ergebnis wird in wurzel_erg gespeichert. Das speichere ich nun auch in x0 um damit die Wurzel aus diesem Ergebnis zu berechnen.
 
Zuletzt bearbeitet:
Hi.

Du hast nicht dein vollständiges Programm vorgestellt, also evtl. passiert da ja noch was anderes. Aber wie es aussieht dividierst du durch 0:
C:
x0 = a0; // a0 ist 0, d.h. x0 auch
do 
{
   x0=x0-(x0*x0-a0)/(2*x0); // Fehler: x0 ist 0
Gruß
 
Zurück