Convertir des chiffres romains en chiffres arabes

Description

Ce programme fait suite à une remarque d'EBArtSoft au sujet de cette "diabolique" écriture romaine... Je vous propose donc ici un petit programme destiné à convertir en chiffres arabes un nombre donné sous forme de chiffres romains. Je précise que la fonction inverse (transformer des chiffres arabes en chiffres romains) n'est pas programmée.

Comment fonctionne l'écriture romaine ?

Ce n'est pas une notation positionnelle comme l'écriture arabe. Elle utilise des symboles (je n'ai retenu que I = 1, V = 5, X = 10, L = 50, C = 100, D = 500 et M = 1000, mais il existait des notations pour de plus grandes valeurs) qui se combinent de deux manières :

1. Juxtaposition simple : par exemple XII = 10 + 1 + 1 = 12 sachant que la règle usuelle est : au plus trois (quelquefois quatre) symboles identiques juxtaposés. Par exemple "III" est acceptable, mais pas "IIIII". Pour ma part, je pourrais vous justifier cela avec une remarque qui n'est pas forcément la bonne : essayer d'aligner des bâtonnets et cherchez à partir de quelle quantité vous ne pouvez plus dire d'un coup d'oeil combien il y en a... la réponse est 4.

2. Juxtaposition par retranchement : dans XL, L est le symbole de plus forte valeur, et pourtant il est PRECEDE du symbole X. Dans ce cas, il faut effectuer L - X = 50 - 10 = 40. On remarquera qu'il y a AU PLUS un seul symbole de moindre valeur. Il est en effet inutile de noter XXL puisque XXL = XXX qui est une écriture correcte.

Voilà donc pour l'idée générale. La programmation ne pose aucune difficulté. Je n'ai pas cherché à soigner le visuel. Le code en revanche est assez largement commenté. Dernière précision, je m'arrête au symbole mille (M) car il me semble que l'utilisation qui est faite de l'écriture romaine ne justifie pas de s'attaquer aux grands nombres... Là encore, c'est très personnel !

J'ai choisi Débutant car c'est très facile (concepts et programmation), et la rubrique Maths parce qu'il est question de nombres... mais alors il ne s'agit que de mathématiques légères ;-)

Source / Exemple :


'Voir le fichier zip

Conclusion :


Comme d'habitude, si quelqu'un a une erreur à rapporter, ou quelque chose à dire, il ne faut pas hésiter.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.