|
Les chiffres romain bien que peut efficace sont très utilisés encore aujourd'hui pour numéroter des annexes, suite de films et des pages de prélude.
Voici leur représentation classique :
| I |
1 |
1 |
1 |
| II |
2 |
2 |
2 |
| III |
3 |
3 |
3 |
| IV |
4 |
4 |
4 |
| V |
5 |
5 |
5 |
| VI |
6 |
6 |
6 |
| VII |
7 |
7 |
7 |
| VIII |
8 |
10 |
8 |
| IX |
9 |
11 |
9 |
| X |
10 |
12 |
A |
| XI |
11 |
13 |
B |
| XII |
12 |
14 |
C |
| XIII |
13 |
15 |
D |
| XIV |
14 |
16 |
E |
| XV |
15 |
17 |
F |
| ... |
... |
... |
... |
Toutefois, il est a noter que les chiffres romain ne dépasse que de très peu les milliers en terme de numérotation.
Pour pouvoir générer automatiquent les nombres à partir de l'équivalence numérique, vous trouverez la réponse que vous souhaitez, à l'aide du code source C suivant :
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- char ReturnString[255];
-
- char * NumberToRomain(int X) {
- strcpy(ReturnString,"");
- switch((X % 1000) / 100) {
- case 9: strcat(ReturnString,"CM");break;
- case 8: strcat(ReturnString,"DCCC");break;
- case 7: strcat(ReturnString,"DCC");break;
- case 6: strcat(ReturnString,"DC");break;
- case 5: strcat(ReturnString,"D");break;
- case 4: strcat(ReturnString,"CD");break;
- case 3: strcat(ReturnString,"CCC");break;
- case 2: strcat(ReturnString,"CC");break;
- case 1: strcat(ReturnString,"C");break;
- }
- switch((X % 100) / 10) {
- case 9: strcat(ReturnString,"XC");break;
- case 8: strcat(ReturnString,"LXXX");break;
- case 7: strcat(ReturnString,"LXX");break;
- case 6: strcat(ReturnString,"LX");break;
- case 5: strcat(ReturnString,"L");break;
- case 4: strcat(ReturnString,"XL");break;
- case 3: strcat(ReturnString,"XXX");break;
- case 2: strcat(ReturnString,"XX");break;
- case 1: strcat(ReturnString,"X");break;
- }
- switch(X % 10) {
- case 9: strcat(ReturnString,"IX");break;
- case 8: strcat(ReturnString,"VIII");break;
- case 7: strcat(ReturnString,"VII");break;
- case 6: strcat(ReturnString,"VI");break;
- case 5: strcat(ReturnString,"V");break;
- case 4: strcat(ReturnString,"IV");break;
- case 3: strcat(ReturnString,"III");break;
- case 2: strcat(ReturnString,"II");break;
- case 1: strcat(ReturnString,"I");break;
- }
- return ReturnString;
- }
-
- int main()
- {
- int I;
- for(I=1;I<=100;I++) {
- printf("%i = %sn",I,NumberToRomain(I));
- }
- return 0;
- }
|
on obtiendra le résultat suivant :
1 = I 2 = II 3 = III 4 = IV 5 = V 6 = VI 7 = VII 8 = VIII 9 = IX 10 = X 11 = XI 12 = XII 13 = XIII 14 = XIV 15 = XV 16 = XVI 17 = XVII 18 = XVIII 19 = XIX 20 = XX 21 = XXI 22 = XXII 23 = XXIII 24 = XXIV 25 = XXV 26 = XXVI 27 = XXVII 28 = XXVIII 29 = XXIX 30 = XXX 31 = XXXI 32 = XXXII 33 = XXXIII 34 = XXXIV 35 = XXXV 36 = XXXVI 37 = XXXVII 38 = XXXVIII 39 = XXXIX 40 = XL 41 = XLI 42 = XLII 43 = XLIII 44 = XLIV 45 = XLV 46 = XLVI 47 = XLVII 48 = XLVIII 49 = XLIX 50 = L 51 = LI 52 = LII 53 = LIII 54 = LIV 55 = LV 56 = LVI 57 = LVII 58 = LVIII 59 = LIX 60 = LX 61 = LXI 62 = LXII 63 = LXIII 64 = LXIV 65 = LXV 66 = LXVI 67 = LXVII 68 = LXVIII 69 = LXIX 70 = LXX 71 = LXXI 72 = LXXII 73 = LXXIII 74 = LXXIV 75 = LXXV 76 = LXXVI 77 = LXXVII 78 = LXXVIII 79 = LXXIX 80 = LXXX 81 = LXXXI 82 = LXXXII 83 = LXXXIII 84 = LXXXIV 85 = LXXXV 86 = LXXXVI 87 = LXXXVII 88 = LXXXVIII 89 = LXXXIX 90 = XC 91 = XCI 92 = XCII 93 = XCIII 94 = XCIV 95 = XCV 96 = XCVI 97 = XCVII 98 = XCVIII 99 = XCIX 100 = C
|
|