Switch - Anweisung funktioniert nicht
-
Hallo das ist mein C++ Code
#include <stdio.h> int main() { int zahl1, zahl2, erg = 0; char op; printf(" Bitte 1. Zahl eingeben:"); scanf("%i", &zahl1); printf(" Bitte 2. Zahl eingeben:"); scanf("%i", &zahl2); printf(" Bitte Rechenoperation auswaehlen:"); scanf("%s", &op); //Switchcase Anweisung switch (op) { case '+': erg = zahl1 + zahl2; printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg); break; case '-': erg = zahl1 - zahl2; printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg); case '*': erg = zahl1 + zahl2; printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg); case '/': erg = zahl1 / zahl2; printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg); default: printf("Sie haben keine Operation gewählt....\n"); break; return 0; } }
Das ist mein eAusgabe
Bitte 1. Zahl eingeben:3
Bitte 2. Zahl eingeben:3
Bitte Rechenoperation auswaehlen:+
Das Ergebnis Ihrer Rechnung lautet: 3Process returned 0 (0x0) execution time : 6.735 s
Press any key to continue.Ich weiß nicht warum ich ein falsches Ergebniss bekommme
Ich wäre für eine Antwort sehr dankbar
-
Ändere
scanf("%s", &op);
in
scanf("%c", &op);
-
Zusätzlich folgende Dinge nach Durchsicht deines Codes:
1. Spätestens wenn du Subtrahierst, wirst du zusätzlich Dividieren und Multiplizieren.
2. Du wirst dich wundern was bei deiner Multiplikation raus kommt. Das Produkt der beiden Zahlen jedenfalls nicht.
-
#include <stdio.h> int main() { int zahl1, zahl2, erg = 0; char op; printf(" Bitte 1. Zahl eingeben:"); scanf("%i", &zahl1); printf(" Bitte 2. Zahl eingeben:"); scanf("%i", &zahl2); printf(" Bitte Rechenoperation auswaehlen:"); scanf("%c", &op); //Switchcase Anweisung switch (op) { case '+': erg = zahl1 + zahl2; printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg); break; case '-': erg = zahl1 - zahl2; printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg); case '*': erg = zahl1 + zahl2; printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg); case '/': erg = zahl1 / zahl2; printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg); default: printf("Sie haben keine Operation gewählt....\n"); break; return 0; } }
Jetzt bekomme ich das hier
Bitte 1. Zahl eingeben:111
Bitte 2. Zahl eingeben:222
Bitte Rechenoperation auswaehlen:Sie haben keine Operation gewõhlt....Process returned 0 (0x0) execution time : 5.794 s
Press any key to continue.
-
Deine Rechenoperation ist '\n'.
siehe "Why does everyone say not to use scanf? What should I use instead?"
http://c-faq.com/stdio/scanfprobs.html
-
scanf(" %c", &op);
Beachte das Leerzeichen (dadurch werden Whitespaces überlesen)!
-
Danke für eure Hilfe
Habe es etwas umgeändert
#include <stdio.h> #include <iostream> using namespace std; int main() { int zahl1, zahl2, erg = 0; char op; cout << " Bitte 1. Zahl eingeben: "<<endl; cin >> zahl1; cout <<" Bitte 2. Zahl eingeben: "<<endl; cin >> zahl2; cout <<" Bitte Rechenoperation auswaehlen: "<<endl; cin >> op; //Switchcase Anweisung switch (op) { case '+': erg = zahl1 + zahl2; cout<< " Das Ergebnis Ihrer Rechnung lautet: \n "<< erg <<endl; break; case '-': erg = zahl1 - zahl2; cout<<" Das Ergebnis Ihrer Rechnung lautet: \n " << erg<<endl; break; case '*': erg = zahl1 * zahl2; cout<<" Das Ergebnis Ihrer Rechnung lautet: \n " << erg <<endl; break; case '/': erg = zahl1 / zahl2; cout<<" Das Ergebnis Ihrer Rechnung lautet: \n " << erg <<endl; break; default: cout<<" Sie haben keine Operation gewählt....\n "<<endl; break; return 0; } }
Jetzt klappt es
Nur eine Frage wie kann ich es vehrindenr das er durch 0 teilt ?
am besten durch eine do While schleife ?
-
case '/': if(zahl2 == 0) { cout<<" Division durch 0 ist nicht erlaubt \n "; } else { erg = zahl1 / zahl2; cout<<" Das Ergebnis Ihrer Rechnung lautet: \n " << erg <<endl; } break;
-
Vielen Dank
-
Nur hast du jetzt kein C mehr sondern C++
-
Hallo!
Nimm doch zur Auswahl des Rechenoperators einen String her, da bei
Betätigung der Enter-Taste ja auch das newline-Zeichen mit abgespeichert wird.
Zur Selektion nimm einfach dann das erste Zeichen im String her: op[0]#include <stdio.h> int main() { int a, b, erg = 0; char op[5]; printf(" Bitte 1. Zahl eingeben:"); scanf("%i", &a); printf(" Bitte 2. Zahl eingeben:"); scanf("%i", &b); printf("Bitte Rechenoperation auswaehlen:"); scanf("%s", op); //Switchcase Anweisung switch (op[0]) { default: printf("Sie haben keine Operation gewählt....\n"); break; case '+': erg = a + b; break; case '-': erg = a - b; break; case '*': erg = a * b; break; case '/': erg = a / b; break; } printf("Aufgabe: %i %c %i = %i\n", a, op[0], b, erg); return 0; }
-
rustyoldguy schrieb:
Nimm doch zur Auswahl des Rechenoperators einen String her, da bei
Betätigung der Enter-Taste ja auch das newline-Zeichen mit abgespeichert wird.
Zur Selektion nimm einfach dann das erste Zeichen im String her: op[0]Das ist nicht nötig, denn:
Th69 schrieb:
scanf(" %c", &op);
Beachte das Leerzeichen (dadurch werden Whitespaces überlesen)!
Damit ist das Leerzeichen vor dem % im Formatspecifier vom
scanf
gemeint.