Programm übersieht "break" in switch-Anweisung.



  • hi,
    ich bin dabei C++ zu lernen und habe eine Frage.
    Ich möchte ein Programm schreiben, wo man zwei Zahlen eingiebt und dann auswählen kann, ob man + oder - rechnet. (eigendlich ganz einfach)
    Nur irgendwie kommt es immer zu einer Endlosschleife.
    Ich weiß, dass ich so etwas wie "var3++" anhängen muss, aber ich möchte ja dass nicht danach - gerechnet wird, sondern dass man dann nochmal auswählen kann, ob - oder + rechnet.
    Mein Code:

    //Rechnen.cpp
    #include <iostream>
    using namespace std;
    
    int main(void) {
    	int var1;
    	int var2;
    	int var3;
    	cout << "Eine Zahl bitte\n";
    	cin >> var1;
    	cout << "Zweite Zahl bitte\n";
    	cin >> var2;
    	cout << "-1- = +\n" << "-2- = -\n" << "-3- = Ende\n" << "Deine Wahl: ";
    	cin >> var3;
    	while( var3 != 3 ) {
    		switch( var3 ) {
    			case 1 :
    				cout << "Die Aufgabe: " << var1 << "+" << var2 << '\n';
    				cout << "= " << var1+var2 << '\n';
    				break;
    			case 2 :
    				cout << "Die Aufgabe: " << var1 << "-" << var2 << '\n';
    				cout << "= " << var1-var2 << '\n';
    				break;
    			case 3 :
    				cout << "Wird beendet...!\n";
    				break;
    		}
    	}
    	return 0;
    }
    

    MfG
    AlphaMensch



  • Ich vermutem Du brauchst

    //Rechnen.cpp
    #include <iostream>
    using namespace std;
    
    int main(void) {
    	int var1;
    	int var2;
    	int var3;
    	cout << "Eine Zahl bitte\n";
    	cin >> var1;
    	cout << "Zweite Zahl bitte\n";
    	cin >> var2;
    	cout << "-1- = +\n" << "-2- = -\n" << "-3- = Ende\n" << "Deine Wahl: ";
    	cin >> var3;
    	while( var3 != 3 ) {
    		switch( var3 ) {
    			case 1 :
    				cout << "Die Aufgabe: " << var1 << "+" << var2 << '\n';
    				cout << "= " << var1+var2 << '\n';
    				break;
    			case 2 :
    				cout << "Die Aufgabe: " << var1 << "-" << var2 << '\n';
    				cout << "= " << var1-var2 << '\n';
    				break;
    			case 3 :
    				cout << "Wird beendet...!\n";
    				break;
    		}
    		cout << "-1- = +\n" << "-2- = -\n" << "-3- = Ende\n" << "Deine Wahl: ";
    		cin >> var3;
    	}
    	return 0;
    }
    


  • Vollziehe mal im Kopf nach, was hier passiert:

    while( var3 != 3 ) {
            switch( var3 ) {
                case 1 :
                    cout << "Die Aufgabe: " << var1 << "+" << var2 << '\n';
                    cout << "= " << var1+var2 << '\n';
                    break;
                case 2 :
                    cout << "Die Aufgabe: " << var1 << "-" << var2 << '\n';
                    cout << "= " << var1-var2 << '\n';
                    break;
                case 3 :
                    cout << "Wird beendet...!\n";
                    break;
            }
    }
    

    Da kommt es natürlich zu einer Endlosschleife. Wenn du allerdings in jedem Schleifendurchlauf den Benutzer nach einer Eingabe fragst, ist das nicht mehr so 😉 Das while also 2 Zeilen höher setzen, vor cout << "-1-...";



  • Super! 🙂
    genauso wollte ich es haben.
    DANKE!


Anmelden zum Antworten