römische zahlen
-
Hi ich wollte ein Programm schreiben, dass aus einer eingegebenen Zahl in eine römische umwandelt... aber irgendwie klappt das nicht richtig, kann mir mal bitte einer helfen??
Das ist was ich bis jetzt habe... sind aber sicherlich so einige Fehler drin:
b #include <stdio.h> void main() { int z; scanf("%d", &z); printf("%d =",z); while(z>=1000) { printf("M");z-=1000; } switch(z/100*100) { case 900: printf("CM"); z-=900; break; case 400: printf("CD"); z-=400; break; default : if (z>=500) { printf("D"); z-=500; } while (z>=100) { printf("C"); z-=100; } } switch(z/10*10) { case 90: printf("XC"); z-=90; break; case 40: printf("XL"); z-=40; break; default : if (z>=50) { printf("L"); z-=50; } while (z>=10) { printf("X"); z-=10; } } switch(z) { case 9: printf("IX"); z-=9; break; case 4: printf("IV"); z-=4; break; default : if (z>=5) { printf("V"); z-=5; } while (z>=1) { printf("I"); z-=1; } } printf("\n"); getchar(); getchar(); }
-
deine fehlerbeschreibung fehlt
-
Ja die Ausgabe ist halt nicht richtig, weil ich nicht weiß, wie man die ganzen Sonderfälle programmieren soll...
Wenn ich zum B. 1999 eingebe, kommt MCMXCIX raus und nicht MIM...
was soll ich da anders machen??
-
dein algorithmus ist fehlerhaft
-
das ist mir klar, aber was genau muss ich denn anders machen?
-
bleistift und papier
wenn du deine eigenen programme nicht mal debuggen kannst, wie soll das nur weitergehen...
-
danke
gibs sonst noch jemand der mir vielleicht mit einer etwas sinnvolleren Antwort helfen kann??
Wäre echt nett!
-
googlen kannst du auch nicht und wikipedia kennst du scheinbar auch noch nicht...
http://de.wikipedia.org/wiki/Römische_Ziffer
entweder du wirst daraus schlau oder du hast absolut nichts gelernt
-
C-Mampf schrieb:
Wenn ich zum B. 1999 eingebe, kommt MCMXCIX raus und nicht MIM...
Das ist doch auch richtig so???
-
Du kannst es ja mal so probieren:
Durch jede römische Ziffer eine Division probieren. Wenn größer 1, dann musst du eben entsprechend viele von dem römischen Zeichen setzen.
Also z.B. 11:
Wenn du bei 100 anfängst zu dividieren:
11/100=0
11/50=0
11/10=1 --> 1X setzen, Rest ausrechnen.=>Rest ist 1.
1%5=0
1%1=1 -->1I setzen.ich hoffe ich habs halbwegs verständlich erklärt.
Grüße,
Harri
-
hmm... ich werds mal versuchen... danke!