Fehlersuche bei code mit switch
-
Hallo Leute, ich kann in meinem Programm einfach nicht den Fehler finden. Hätte einer von euch eine Idee?
Zur Aufagbe: Es sollen nacheinander 2 Zahlen eingegeben werden (von 1-3) und die daraus kombinierte Zahl z.B. 22 soll dann bei der Ausgabe "Zweiundzwanzig" stehen.#include <iostream> using namespace std; int main() { unsigned short a,b; cout << "Erste Ziffer (1..3): "; cin >> a; cout << "Zweite Ziffer (1..3): "; cin >> b; switch (a) { case '1' : switch (b) { case '1' : cout << "Elf"; break; case '2' : cout << "Zwoelf"; break; case '3' : cout << "Dreizehn"; break; } break; case '2' : switch (b) { case '1' : cout << "Einundzwanzig"; break; case '2' : cout << "Zweiundzwanzig"; break; case '3' : cout << "Dreiundzwanzig"; break; } break; case '3' : switch (b) { case '1' : cout << "Einunddreissig"; break; case '2' : cout << "Zweiunddreissig"; break; case '3' : cout << "Dreiunddreissig"; break; } break; default: cout << "Unzulaessige Eingabe, Programm beendet"; break; } cout << endl; return 0; }
-
#include <iostream> using namespace std; int main() { unsigned short a,b; // und warum nimmst du dann weiter unten char statt short?
-
char a, b; cin >> a; cin >> b; string Einer[4] = { "", "Ein", "Zwei", "Drei" }; string Zehner[4] = { "", "", "zwanzig", "dreissig" }; string s; if (a == '1') switch(b) { case '1': s = "Elf"; break; case '2': s = "Zwoelf"; break; case '3': s = "Dreizehn"; break; } else s = Einer[b-'0'] + "und" + Zehner[a-'0']; cout << s << endl;
-
Im Prinzip ist dein Ansatz genau richtig so, dein einziger Fehler liegt bei case
da vergleichst du nämlich Integer (1-3) mit chars ('1', '2', '3'), hier würde dann von int zu char implizit gecastet werden und das führt nicht zu dem Ergebnis, welches du haben willst.Alt
switch (a) { case '1': switch (b) { case '1': cout << "Elf"; break; case '2': cout << "Zwoelf"; break; case '3': cout << "Dreizehn"; break; } break;
Neu
switch (a) { case 1: switch (b) { case 1: cout << "Elf"; break; case 2: cout << "Zwoelf"; break; case 3: cout << "Dreizehn"; break; } break;