C :: Aufgabe #82 :: Lösung #1
2 Lösungen
#82
Jahreszahlenkonverter für römische Schreibweise
Anfänger - C
von BlackBird321
- 04.06.2015 um 22:36 Uhr
Bitte schreibe ein Programm, welches eine einzugebende Jahreszahl in eine römische Schreibweise umwandelt.
Beispiel:
1995 = MCMXCV
2015 = MMXV
Beispiel:
1995 = MCMXCV
2015 = MMXV
#1
von devnull (8870 Punkte)
- 07.06.2015 um 09:44 Uhr
/********************************************
* romjahr.c römische Jahreszahlen
********************************************/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define MAXYEAR 4000
char* romchr(int digit, int range, char *p) {
char r1, r2, r3;
switch (range) {
case 1: r1 = 'I'; r2 = 'V'; r3 = 'X'; break;
case 2: r1 = 'X'; r2 = 'L'; r3 = 'C'; break;
case 3: r1 = 'C'; r2 = 'D'; r3 = 'M'; break;
case 4: r1 = 'M';
}
switch (digit) {
case 3 : *p++ = r1;
case 2 : *p++ = r1;
case 1 : *p++ = r1; break;
case 4 : *p++ = r1;
case 5 : *p++ = r2; break;
case 6 : *p++ = r2;
*p++ = r1; break;
case 7 : *p++ = r2;
*p++ = r1;
*p++ = r1; break;
case 8 : *p++ = r2;
*p++ = r1;
*p++ = r1;
*p++ = r1; break;
case 9 : *p++ = r1;
*p++ = r3; break;
}
return p;
}
char* arcnv(int val) {
static char buf[20];
char *pr = buf;
int div=1000, range=4;
memset(buf, 0, 20);
if (val < MAXYEAR) {
while (div) {
pr = romchr(val/div, range--, pr);
val%=div;
div/=10;
}
}
return buf;
}
int main() {
unsigned int year;
printf("Geben Sie eine Jahreszahl (< %d) ein: ", MAXYEAR);
scanf("%u", &year);
printf("%u entspricht römisch %s\n", year, arcnv(year));
return 0;
}
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
