Konvertierung: char[] --> int
-
Hallo Leute!
Es wäre echt toll wenn mir jemand bei folgendem Programm helfen könnte.
Eigentlich ist es ganz simpel:
Ich möchte ein Programm, das eine vierstellige ganze Zahl einliest und ihre sprachliche Repräsentation ausgibt.
z.B. Eingabe 1723
Ausgabe eins-sieben-zwei-drei.Aber irgendwie hänge ich da total fest. Die switch Anweisung macht mir total Probleme (ab und an stellt sie die erste Ziffer da, der reste ist aber immer Null oder fällt gleich ganz weg).
Irgendwie scheint der die Umwandlung meines Charakters in einen Integer nicht zu packen.
Das sollte doch eigentlich locker gehen, oder?
Aber bei der Umwandlung wandelt er stehts in irgendeinen zufälligen Blödsinn um.Wäre echt super, wenn mir da jemand helfen könnte. Bin schon ganz verzweifelt und hänge an dem Zeug schon seit Stunden fest.

Ich hab hier mal den Code meines Programmes:
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; int main() { //Program soll eine 4stellige Zahl sprachlich repräsentieren char exitKey[] = "EXIT"; char eingabeExit[5]; cout << "Das Programm wird gestartet\n"; do { //Hauptprogramm beginnt hier int zahl; char hilfschar[5]; cout << "Bitte eine vierstellige Zahl eingeben:\n"; cin >> hilfschar; cout << "Die gesuchte Zahl lautet: "; int durchlaufNummer = 0; while(durchlaufNummer < 4) { int hilfsint = int(hilfschar[durchlaufNummer]); // Diese Konvertierung klappt nicht. Warum? switch (hilfsint){ case 0: cout << "Null"; break; case 1: cout << "Eins"; break; case 2: cout << "Zwei"; break; case 3: cout << "Drei"; break; case 4: cout << "Vier"; break; case 5: cout << "Fünf"; break; case 6: cout << "Sechs"; break; case 7: cout << "Sieben"; break; case 8: cout << "Acht"; break; case 9: cout << "Neun"; break; }; durchlaufNummer++; } cout << "\nWenn sie das Programm beenden wollen geben sie bitte 'EXIT' ein\n"; cout << "Andernfalls können sie durch eingabe irgendeines keys das Programm erneut starten"; //Abfrage ob das Programm nochmals ausgeführt werden soll cin >> eingabeExit; } while (strcmp (exitKey,eingabeExit) != 0); cout << "Auf Wiedersehen!\n"; system("PAUSE"); return EXIT_SUCCESS; return 0; }
-
FabianGuest schrieb:
int hilfsint = int(hilfschar[durchlaufNummer]); // Diese Konvertierung klappt nicht. Warum?
Weil der Wert des Zeichens '0' nicht Null ist. Warum benutzt du in deiner switch-Anweisung nicht gleich die char-Werte '0', '1', '2' usw.?
-
Ja, klar, danke!
Irgendwie dachte ich, dass switch nur mit Integern geht, und da hat dann halt die Konvertierung von char-->int Probleme gemacht.Vielen, vielen Dank!

Falls es jemand interessiert, die richtige Lösung sieht so aus:
switch (hilfschar[durchlaufNummer]){ case '0': cout << "Null"; break; case '1': cout << "Eins"; break; case '2': cout << "Zwei"; break; case '3': cout << "Drei"; break; case '4': cout << "Vier"; break; case '5': cout << "Fünf"; break; case '6': cout << "Sechs"; break; case '7': cout << "Sieben"; break; case '8': cout << "Acht"; break; case '9': cout << "Neun"; break; };
-
FabianGuest schrieb:
Ja, klar, danke!
Irgendwie dachte ich, dass switch nur mit Integern geht, und da hat dann halt die Konvertierung von char-->int Probleme gemacht.Das ist ja auch richtig. Allerdings ist 'char' auch ein Integer-Datentyp, deshalb kannst du den auch verwenden.