C++ do-while schleife Frage

09/03/2013 00:06 ErawondA#1
Nabend,
ich habe eine kleine Frage zu meinem Taschenrechner Programm
und zwar habe ich dem Programm eine Menü Auswahl gegeben, aber immer wenn
ich eine Rechnung beende wiederholt sich das Menü 3x hintereinander und die Ergebnisse sind auch falsch z.B. 5+6=10.
Danke für die Hilfe im voraus.
Code:
// Taschenrechner mit Menü
// C++
//
#include <iostream>

using namespace std;

// Hauptprogramm
//
int main ()
{
	// Variablen
	//
	char chAuswahl;
	double Zahld;

	// Abfragen was berechnet werden soll
	// Wiederholen mit einer Schleife
	do
	{
	cout << "(A)ddieren, (S)ubtrahieren, (M)ultiplizieren, (D)ividieren (I)nfo, (B)eenden" << endl;
	cin >> chAuswahl;

	switch (chAuswahl)
	{
		// Plus rechnen ?
	case ('a'):
	case ('A'):
		{
			cout << "Ihre Rechenaufgabe: ";
			cin >> Zahld;
			cout << "Ergebniss: " << Zahld + Zahld << endl;
		} break;
		// Minus rechnen ?
	case ('s'):
	case ('S'):
		{
			cout << "Ihre Rechenaufgabe: ";
			cin >> Zahld;
			cout << "Ergebniss: " << Zahld - Zahld << endl;
		} break;
		// Mal rechnen ?
	case ('m'):
	case ('M'):
		{
			cout << "Ihre Rechenaufgabe: ";
			cin >> Zahld;
			cout << "Ergebniss: " << Zahld * Zahld << endl;
		} break;
		// Teilen ?
	case ('d'):
	case ('D'):
		{
			cout << "Ihre Rechenaufgabe: ";
			cin >> Zahld;
			cout << "Ergebniss: " << Zahld / Zahld << endl;
		} break;
		// Informationen ?
	case ('i'):
	case ('I'):
		{
			cout << "Taschenrechner V 1.0 " << endl;
			cout << "Geschrieben in C++ " << endl;
		} break;
		// Beenden
	case ('b'):
	case ('B'):
		{
			cout << "Programm beenden. " << endl;
		} break;
		// Alles andere mit Falsch Eingabe beenden
	default:
		{
			cout << "Falsche Eingabe. " << endl;
		}
	}
	} while (chAuswahl != 'b' && chAuswahl != 'B');
	cout << "Bis zum naechsten mal" << endl;

	return 0;
}
09/03/2013 01:00 Tasiro#2
Du liest doch nur eine einzige Variable ein. Einmal pro Durchlauf wird Zahld eingelesen und dann die gewählte Rechenoperation mit der Zahl selbst ausgeführt. Wenn die Eingabe etwa A 5 ist, gibt dein Programm 10 aus.
09/03/2013 01:05 Beni#3
Nimm mehr double Variablen. Du hast eine einzige Variable, was bedeutet: Die Zahl die du eingibst wird mit sich selbst addiert, subtrahiert, multipliziert oder dividiert. Du musst die zweite Eingabe unter einer neuen Variablen sprichern.

Kann dir leider nicht sagen wies genau geht, kann nur C#.

Lg Beni
09/03/2013 08:41 Egon#4
Wurde ja alles schon gesagt, also nur mehr ein wenig extra Senf von mir.

Da du nur mit "zahld" arbeitest, kannst du dort niemals 2 verschiedene Zahlen drinnen haben. 1 Variable -> 1 Zahl.
Somit rechnet das Programm immer diese eine Zahl mit sich selbst.
Selbst wenn du nochmal eine Zahl einlesen würdest (warum das nicht passiert, wurde oben schon erklärt) würde eben diese neue Zahl "mit sich selbst rechnen".

Einfach ne zweite Eingabe machen (wie auch schon erwähnt) und zwei Variablen verwenden.

Entschuldigt, wenn die Syntax nicht so passt, ist eine Weile her, aber es sollte verständlich sein.

z.B.
double zahl1, zahl 2;

Einlesen:
cout << "Ihre erste Zahl: ";
cin >> zahl1;
cout << "Ihre zweite Zahl: ";
cin >> zahl2;

Ausgabe (addieren)
cout << "Ergebniss: " << zahl1 + zahl2 << endl;
09/03/2013 13:15 ErawondA#5
Klappt danke
<3
#closed