arabische in römische zahlen umwandeln?
-
hallo,
ich sitz grad an ner hausarbeit die ich demnächst abgeben muß und hab mich da mittedrin aufgehängt...ich soll in c++ nen prog schreiben das römische zahlen in arabischen umwandelt und umgekehrt (bereich 1 bis 3999).
hab das prog soweit fertig, nur das umwandeln von arabisch in römisch klappt bis jetzt nur teilweise.
hoff jetzt mal das mir da einer von euch helfen kann wo ich den fehler hab.
häng jetzt mal nur den ausschnitt dran in dem die umwandlung passiert, oder besser passieren sollte.grüße, sebastian
int arabToRoe(int wandelZahlArab)
{
int arabZahl[19];arabZahl[0] = 1; arabZahl[7] = 50; arabZahl[14] = 500; //wertearray anlegen
arabZahl[1] = 4; arabZahl[8] = 90; arabZahl[15] = 900;
arabZahl[2] = 5; arabZahl[9] = 99; arabZahl[16] = 990;
arabZahl[3] = 9; arabZahl[10] = 100; arabZahl[17] = 999;
arabZahl[4] = 10; arabZahl[11] = 400; arabZahl[18] = 1000;
arabZahl[5] = 40; arabZahl[12] = 490;
arabZahl[6] = 49; arabZahl[13] = 499;while(wandelZahlArab > 0) { // umwandeln arabisch in römisch
for(int i=18; i>=0; i--) {
if(wandelZahlArab >= arabZahl[i]) {
switch(i) {
case 0: cout <<"I"; break; case 7: cout <<"L"; break; case 14: cout <<"D"; break;
case 1: cout <<"IV"; break; case 8: cout <<"XC"; break; case 15: cout <<"CM"; break;
case 2: cout <<"V"; break; case 9: cout <<"IC"; break; case 16: cout <<"XM"; break;
case 3: cout <<"IX"; break; case 10: cout <<"C"; break; case 17: cout <<"IM"; break;
case 4: cout <<"X"; break; case 11: cout <<"CD"; break; case 18: cout <<"M"; break;
case 5: cout <<"XL"; break; case 12: cout <<"XD"; break;
case 6: cout <<"IL"; break; case 13: cout <<"ID"; break;
}
wandelZahlArab -= arabZahl[i];
break;
}
}
}
cout <<endl <<endl;
return 0;
}
-
Bitte schreibe nach jedem ; in eine neue Zeile und benutze
//Das Da
abgesehen davon: Was genau funktioniert nicht?
-
sorry, hab auch scho gemerkt das das nich die ideale lösung war...
darum jetzt ganz dumme frage, wie poste ich den quelltext richtig?was genau nich funktioniert is schwer zu sagen, das teil gibt einfach teilweise falsche ergebnisse aus, hab da noch kein system drin erkannt, sonst könnt ich von da ja auch auf den fehler zurückschließen
grüße
-
hmm ... leg dir nen std::vector an ... oder kannst auch nen statischen array nehmen ... ist allerdings nicht so dynamisch ... und gehst hin und legst da immer datenpaare rein (Römischezahl, Arabischezahl) ... dann sortierst du die zahlen absteigend nach den arabischen zahlen ... und teilst deine zahl durch die höchste zahl ... bis einmal was größer/gleich 1 rauskommt ... falls größer 1 rauskommt, packst du schonmal die gerade ermittelte römische zahl in nen string und gehst dann weiter durch ... bis genau 1 rauskommt ... dann bisse fertig
-
http://de.wikipedia.org/wiki/Römische_Zahl ... vllt auch nochmal interessant für größere Zahlen ...