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 :
Nombre Romain | Nombre décimal | Nombre octal | Nombre hexadécimal |
---|---|---|---|
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 automatiquement les nombres à partir de l'équivalence numérique, vous trouverez la réponse que vous souhaitez, à l'aide du code source Visual C++ suivant :
- #include "stdafx.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 argc, char* argv[])
- {
- for(int I=1;I<=100;I++) {
- printf("%i = %s\n",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 |
Dernière mise à jour : Samedi, le 7 avril 2018