switch Anweisung?
-
"Verwenden Sie zur Auswertung des Operators bitte eine switch-Anweisung."
Ich hab das so verstanden, dass sich der Satz auf die ganze Aufgabe bezieht...
-
Ne, wieso denn.
Das Auswerten der Operatoren mit switch Anweisung ist ja logisch.
Das hat aber mit dem Rest des Programmes wenig zu tun.
-
Hm, ok, das nimmt natürlich dann der Aufgabe seinen Schrecken...

-
Joa ^^ Ich würd eher sagen, dass das der Aufgabe seine Sinnlosigkeit nimmt, aber oke :p
Viel Spaß beim Lösen
-
Es wäre auf jeden Fall sinnvoll das switch zeug in eine funktion (zB calc()) zu unterteilen. Ich hab mir es irgendwie angewöhnt alles außerhalb von main() und sogar außerhalb von main.cpp zu schreiben. So habe ich in main() zB nur:
MeinKern *kern = new MeinKern(); kern->start();. Ich wies, das ist komisch...
(vv signatur gucken vv)
-
lk schrieb:
Es wäre auf jeden Fall sinnvoll das switch zeug in eine funktion (zB calc()) zu unterteilen. Ich hab mir es irgendwie angewöhnt alles außerhalb von main() und sogar außerhalb von main.cpp zu schreiben. So habe ich in main() zB nur:
MeinKern *kern = new MeinKern(); kern->start();. Ich wies, das ist komisch...
Das wird noch.
-
Hi Leute!
Ihr kennt ja jetzt meine Aufgabe. Ich hab aber trotzdem irgendwie Probleme mit dem Verständnis der Aufgabe. Das liest sich für micht so, dass wenn Schritt 4 (also das Anzeigen des Ergebnisses) vorbei ist dann noch weitere Eingaben (ich find das sehr ungenau angegeben... was sind diese weiteren Eingaben?) machen darf. Das ist mein erstes Problem. Gut man darf weitere Eingaben MUSS aber anscheinend nicht. Dann geht's weiter bei Schritt 5. Der ist klar. Schritt 6 ist mir unklar. Eingabe einer Zahl. Wieder so ungenau. Welche Zahl meint er denn jetzt? Die erste oder die zweite? Vor allem die Eingabe einer Zahl macht doch nicht so viel Sinn, da ich ja dann bei der nächsten Rechenoperation die neue eingegebene Zahl mit der alten Zahl von ganz von Anfang mit dem neuen Operator verrechne... Schritt 7 ist klar, ich soll einfach wieder holen. Meine wahrscheinlich noch fehlerhaftes Programm seht ihr unten:
#include<iostream> using namespace std; int main() { char op; int zahl1, zahl2, wzahl, 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 43: cout << "Sie befinden sich in Addition" << endl; erg = zahl1 + zahl2; cout << "Ergebnis der Addition: " << erg << endl; break; case 45: cout << "Sie befinden sich in Subtraktion" << endl; erg = zahl1 - zahl2; cout << "Ergebnis der Subtraktion: " << erg << endl; break; case 42: cout << "Sie befinden sich in Multiplikation" << endl; erg = zahl1 * zahl2; cout << "Ergebnis der Multiplikation: " << erg << endl; break; case 47: cout << "Sie befinden sich in Division" << endl << endl; erg = zahl1 / zahl2; cout << "Ergebnis der Division: " << erg << endl; break; case 37: cout << "Sie befinden sich in Modulo" << endl << endl; erg = zahl1 % zahl2; cout << "Ergebnis von Modulo: " << erg << endl; break; default: cout << "Auf wiedersehen!" << endl; break; } }while(op != 113); system("pause"); return 0; }Wie seht ihr die Aufgabe? Ist die Aufgabe ungenau gestellt, oder bin ich einfach zu blöd/dumm/unerfahren oder für die Informatik nicht geeignet um das kapieren?
Danke!
-
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:
64=24
usw.Schreib statt
case 42lieber
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.