switch-Anweisung: Zahlen in Sprache ausgeben

Sick-Angel

Grünschnabel
Hallo,

Hoffe, dass ihr mir wieder weiterhelfen könnt. Und zwar ist die Aufgabenstellung die, dass man eine 4stellige Zahl einliest, und diese dann in Wort ausgegeben soll.
Sprich:
Eingabe z.B.: 1234
Ausgabe demnach: Eins-Zwei-Drei-Vier

Ich hab schon ne ganze Weile herumprobiert. Eben auch mit der switch-Anweisung, die wir kurz angerissen haben. Es kommt nur nichts Vernünftiges raus, weil ich auch nicht weiß, ob man mit einer Anweisung gleich mehrere Zahlen zugleich bearbeiten kann, oder ob ich nun für jede Stelle die gesamte case-Staffel erneut angeben muß *?*

Code:
#include <iostream.h>
#include <math.h>
int main()
{
int zahl, zahl1, zahl2, zahl3, zahl4;
 
cout << "Bitte geben Sie eine 4-stellige Zahl ein: ";
cin >> zahl;
 
zahl1=zahl%10;
zahl2=(zahl/10)%10;
zahl3=(zahl/100)%10;
zahl4=(zahl/1000)%10;
 
switch (zahl1,zahl2,zahl3,zahl4)
{
	 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;
}
 
cout << "Die eingegebene Zahl lautet: " <<zahl4<<"-"<<zahl3<<"-"<<zahl2<<"-"<<zahl1<<endl;
return 0;
}

Wenn ich das ausführe (zum Kompilieren gehts) kommt halt das dabei raus:
Bitte geben Sie eine 4-stellige Zahl ein: 3568
DreiDie eingegebene Zahl lautet: 3-5-6-8
Ich seh schon, warum er die Zahl wieder als Zahl ausgibt (eben weil ichs oben so zugewiesen hab), ich weiß nur nicht ganz, wie ich was abändern muß, sodass er die case-Werte aller Zahlen ausgibt.

Vielen Dank im Voraus!

lg,
Angie
 
Zuletzt bearbeitet:
>> switch (zahl1,zahl2,zahl3,zahl4)
das geht nicht du musst jede Zahl einzeln durch das Switch schicken , ausserdem musst du die Strings ausgeben und nicht die ints. Ausserdem vergiss nicht tausend , hundert,
 
@Tom,

danke für den Link. Dass ich die einzelnen Ziffern durch mod rausfiltern kann, hab ich schon im Beispiel.

Ich wollte nur wissen, ob ich die case-Anweisungen irgendwie zusammenfassen kann, oder ob ich nun jede Zahl einzeln aufschlüsseln muß, wie hier:

Code:
#include <iostream.h>
#include <math.h>
int main()
{
int zahl, zahl1, zahl2, zahl3, zahl4;
cout << "Bitte geben Sie eine 4-stellige Zahl ein: ";
cin >> zahl;
zahl1=zahl%10;
zahl2=(zahl/10)%10;
zahl3=(zahl/100)%10;
zahl4=(zahl/1000)%10;
cout << "Die eingegebene Zahl lautet: ";
switch (zahl4)											 
{																			
	 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\374nf";												 
	 break;																	 
	 case 6: cout<<"Sechs";													 
	 break;																	 
	 case 7: cout<<"Sieben";													
	 break;																	 
	 case 8: cout<<"Acht";													 
	 break;																	 
	 case 9: cout<<"Neun";													 
	 break;																	 
}	 
 
cout << "-";
switch (zahl3)											 
{																			
	 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\374nf";												 
	 break;																	 
	 case 6: cout<<"Sechs";													 
	 break;																	 
	 case 7: cout<<"Sieben";													
	 break;																	 
	 case 8: cout<<"Acht";													 
	 break;																	 
	 case 9: cout<<"Neun";													 
	 break;																	 
}	 
 
cout << "-";
switch (zahl2)											 
{																			
	 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\374nf";												 
	 break;																	 
	 case 6: cout<<"Sechs";													 
	 break;																	 
	 case 7: cout<<"Sieben";													
	 break;																	 
	 case 8: cout<<"Acht";													 
	 break;																	 
	 case 9: cout<<"Neun";													 
	 break;																	 
}	 
 
cout << "-";
switch (zahl1)											 
{																			
	 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\374nf";												 
	 break;																	 
	 case 6: cout<<"Sechs";													 
	 break;																	 
	 case 7: cout<<"Sieben";													
	 break;																	 
	 case 8: cout<<"Acht";													 
	 break;																	 
	 case 9: cout<<"Neun";													 
	 break;																	 
}	 
 
cout << endl;
return 0;
}

@basd:

Ne, wir brauchen die Ziffern nur einzeln mit Bindestrich ausgeben. Also nicht so kompliziert wie das Wettbewerbsbeispiel.

lg,
Angie
 
Zurück