switch Anweisung?



  • Ich würde sagen, dass du das Ergebnis was du bekommst weiter verwenden sollst.
    Das ist eigentlich ziemlich unmissverständlich formuliert und macht auch den meisten Sinn, weil man damit einem Taschenrechner sehr nahe kommt...
    Z.B.:
    4+4=8
    Eingabe von -2:
    8-2=6
    Eingabe von 4:
    6
    4=24
    usw.

    Schreib statt

    case 42
    

    lieber

    case '*'
    

    damit sofort klar ist das du ein char vergleichen möchtest und nicht einen int, zudem muss man nicht die ascii-Zeichen raten.



  • Also, die Taschenrechnerfunktion geht jetzt eigenlich schon mal und zwar so wie du geschrieben hast, bzw. wie es die Aufgabe in der Tat verlangt. Das einzige Problem was ich jetzt noch habe ist, dass ich nicht recht weiß, wie ich die Sache mit dem "Quit" hinbekommen soll. Wenn ich mich nun bei Schritt 5 der Aufgabenstellung befinde und anstatt einen Operator die Taste "q" drücke, dann kommt trotzdem immer erst noch der darauffolgende Schritt "Zahl2 eingeben: " und dann erst der default Fall und erst dann wird die do-while-Schleife beendet, da dann die Bedingung nicht mehr erfüllt ist. Ich möchte aber, dass wenn ich bei Schritt 5 die Taste "q" drücke er mir SOFORT in den default-Fall springt und die do-while-Schleife beendet wird. Hier mein CODE:

    #include<iostream>
    using namespace std;
    
    int main()
    {
    char op;
    int zahl1, zahl2, erg, quit;
    
    cout << "Zahl 1 eingeben: ";
    cin >> zahl1;
    
    do
    {
    cout << endl << "Operator eingeben (moeglicher Operator: +, -, *, / oder %): ";
    cin >> op;
    
    cout << endl << "Zahl 2 eingeben: ";
    cin >> zahl2;
    
    switch (op)
    {
    case '+':
         cout << "Sie befinden sich in Addition" << endl;
         erg = zahl1 + zahl2;
         zahl1 = erg;
         cout << "Ergebnis der Addition: " << erg << endl;
         break;
    
    case '-':
         cout << "Sie befinden sich in Subtraktion" << endl;
         erg = zahl1 - zahl2;
         zahl1 = erg;
         cout << "Ergebnis der Subtraktion: " << erg << endl;
         break;
    
    case '*':
         cout << "Sie befinden sich in Multiplikation" << endl;
         erg = zahl1 * zahl2;
         zahl1 = erg;
         cout << "Ergebnis der Multiplikation: " << erg << endl;
         break;
    
    case '/':
         cout << "Sie befinden sich in Division" << endl << endl;
         erg = zahl1 / zahl2;
         zahl1 = erg;
         cout << "Ergebnis der Division: " << erg << endl;
         break;
    
    case '%':
         cout << "Sie befinden sich in Modulo" << endl << endl;
         erg = zahl1 % zahl2;
         zahl1 = erg;
         cout << "Ergebnis von Modulo: " << erg << endl;
         break;
    
    default:
            cout << "Auf wiedersehen!" << endl;
            break;
    }
    }while(op != 'q');
    
    system("pause");
    return 0;   
    }
    


  • So, ich glaub ich hab die Lösung meines Problems nun selber hinbekommen. Vielleicht seid ihr so nett und guckt mal drüber ob das so der Aufgabe entspricht, bzw. ob ihr das euch auch so vorgestellt habt... Danke!

    Hier der neue Code:

    #include<iostream>
    using namespace std;
    
    int main()
    {
    char op;
    int zahl1, zahl2, erg, quit;
    
    cout << "Zahl 1 eingeben: ";
    cin >> zahl1;
    
    do
    {
    cout << endl << "Operator eingeben (moeglicher Operator: +, -, *, /, % oder q fuer Quit): ";
    cin >> op;
    
    switch(op)
    {
    case '+':
         cout << endl << "Sie befinden sich in Addition" << endl;
         cout << endl << "Zahl 2 eingeben: ";
         cin >> zahl2;
         erg = zahl1 + zahl2;
         zahl1 = erg;
         cout << "Ergebnis der Addition: " << erg << endl;
         break;
    
    case '-':
         cout << endl << "Sie befinden sich in Subtraktion" << endl;
         cout << endl << "Zahl 2 eingeben: ";
         cin >> zahl2;
         erg = zahl1 - zahl2;
         zahl1 = erg;
         cout << "Ergebnis der Subtraktion: " << erg << endl;
         break;
    
    case '*':
         cout << endl << "Sie befinden sich in Multiplikation" << endl;
         cout << endl << "Zahl 2 eingeben: ";
         cin >> zahl2;
         erg = zahl1 * zahl2;
         zahl1 = erg;
         cout << "Ergebnis der Multiplikation: " << erg << endl;
         break;
    
    case '/':
         cout << endl << "Sie befinden sich in Division" << endl << endl;
         cout << endl << "Zahl 2 eingeben: ";
         cin >> zahl2;
         erg = zahl1 / zahl2;
         zahl1 = erg;
         cout << "Ergebnis der Division: " << erg << endl;
         break;
    
    case '%':
         cout << endl << "Sie befinden sich in Modulo" << endl << endl;
         cout << endl << "Zahl 2 eingeben: ";
         cin >> zahl2;
         erg = zahl1 % zahl2;
         zahl1 = erg;
         cout << "Ergebnis von Modulo: " << erg << endl;
         break;
    
    default:
            cout << endl << "Auf wiedersehen!" << endl;
            break;
    }
    }while(op != 'q');
    
    system("pause");
    return 0;   
    }
    


  • Nachdem ich 3 mal meine Meinung geändert habe bin ich zu dem Schluss gekommen, dass das Programm genau das macht was gefordert ist 👍.
    Nur wenn du was anderes als q(oder operator) eingibst, dann sagt der Taschenrechner "Auf Wiedersehen" beendet aber nicht.

    Die Variable quit ist überflüssig und Einrückungen könnten noch optimiert werden.


Anmelden zum Antworten