Einfacher Umrechner für römische Zahlen, vereinfachte Subtraktionsregel, Werte fest einkompiliert. Verschönerungen in Arbeit
#include <stdlib.h> #include <stdio.h> /*zuordnung roemische/arabische ziffern festlegen*/ #define M 1000 #define D 500 #define C 100 #define L 50 #define X 10 #define V 5 #define I 1 /*anzahl zahlen*/ #define anz_zahl 5 /*zahlen zum uebersetzen*/ int zahl[] = {7667, 12 ,43, 24, 128 }; /*zaehlvariablen anlegen*/ int count_m, count_d, count_c, count_l, count_x, count_v, count_i, tmp_zahl, i; /*beginn hauptfunktion*/ int main() { printf("\n"); for (i=0; i<anz_zahl; i++) { tmp_zahl = zahl[i]; /*Umrechnung durch zaehlen der vorkommnisse ohne subtraktionsregel, evtl durch array/schleife loesen*/ if (tmp_zahl >= M) { count_m = tmp_zahl / M; tmp_zahl = tmp_zahl - M * count_m; } if (tmp_zahl >= D) { count_d = tmp_zahl / D; tmp_zahl = tmp_zahl - D * count_d; } if (tmp_zahl >= C) { count_c = tmp_zahl / C; tmp_zahl = tmp_zahl - C * count_c; } if (tmp_zahl >= L) { count_l = tmp_zahl / L; tmp_zahl = tmp_zahl - L * count_l; } if (tmp_zahl >= X) { count_x = tmp_zahl / X; tmp_zahl = tmp_zahl - X * count_x; } if (tmp_zahl >= V) { count_v = tmp_zahl / V; tmp_zahl = tmp_zahl - V * count_v; } if (tmp_zahl >= I) { count_i = tmp_zahl / I; tmp_zahl = tmp_zahl - I * count_i; } /*Ausgabe der Zahlenpaare */ printf("Arabische Zahl: %i\n", zahl[i]); printf("Roemische Zahl: "); while (count_m != 0 ) { printf("M"); count_m-=1; } while (count_d != 0 ) { printf("D"); count_d-=1; } while (count_c != 0 ) { if (count_c == 4) { printf("CD"); count_c=0; } else { printf("C"); count_c-=1; } } while (count_l != 0 ) { printf("L"); count_l-=1; } while (count_x != 0 ) { if (count_x == 4) { printf("XL"); count_x=0; } else { printf("X"); count_x-=1; } } while (count_v != 0 ) { printf("V"); count_v-=1; } while (count_i != 0 ) { if (count_i == 4) { printf("IV"); count_i=0; } else { printf("I"); count_i-=1; } } printf("\n\n"); } /*schluss*/ return 0; }