48 lines
1.2 KiB
C
48 lines
1.2 KiB
C
#include <stdio.h>
|
|
|
|
// Struktur für eine römische Ziffer und ihren Wert
|
|
typedef struct {
|
|
int wert; // Der Wert der Ziffer (z.B. 1)
|
|
const char *roemisch; // Das römische Zeichen (z.B. "I")
|
|
} RoemZahl;
|
|
|
|
int main() {
|
|
// Tabelle der römischen Ziffern, aufsteigend sortiert (klein nach groß)
|
|
RoemZahl ziffern[] = {
|
|
{1, "I"},
|
|
{4, "IV"},
|
|
{5, "V"},
|
|
{9, "IX"},
|
|
{10, "X"},
|
|
{40, "XL"},
|
|
{50, "L"},
|
|
{90, "XC"},
|
|
{100, "C"},
|
|
{400, "CD"},
|
|
{500, "D"},
|
|
{900, "CM"},
|
|
{1000, "M"}
|
|
};
|
|
const int n = sizeof(ziffern) / sizeof(ziffern[0]);
|
|
int zahl;
|
|
|
|
// Zahl vom Benutzer einlesen
|
|
printf("Zu wandelnde Zahl: ");
|
|
scanf("%d", &zahl);
|
|
|
|
|
|
|
|
printf("... %d = ", zahl);
|
|
|
|
// Über die Ziffern von groß nach klein iterieren (von hinten nach vorne)
|
|
for (int i = n - 1; i >= 0; i--) {
|
|
// So oft wie möglich die aktuelle Ziffer abziehen und ausgeben
|
|
for (int j = 0; j < zahl / ziffern[i].wert; j++) {
|
|
printf("%s", ziffern[i].roemisch);
|
|
}
|
|
zahl %= ziffern[i].wert;
|
|
}
|
|
|
|
printf("\n");
|
|
return 0;
|
|
} |