Convertisseur de chiffres romain au chiffre décimale

Soyez le premier à donner votre avis sur cette source.

Snippet vu 33 593 fois - Téléchargée 36 fois

Contenu du snippet

C'est un simple convertisseur qui reçoit a l'entree des chiffre remain tel que "IVCL" ala sortie il affiche leurs valeur en chiffre ;)

Source / Exemple :


#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<MATH.H>
int val(char c)
{
switch (c)
{
case 'I':return 1;
case 'V':return 5;
case 'X':return 10;
case 'L':return 50;
case 'C':return 100;
case 'D':return 500;
case 'M':return 1000;
}
return 0;
}
int convertir(char str[])
{
int i=0,j,k;
for (j=0;j<strlen(str);j++)
{
k=val(str[j]);
if (k<=i)
i+=k;
else
i=k-i;
}
return abs(i);
}
void main()
{
char str[20];
textcolor(11);
clrscr();
do
{
printf("Donnez votre chiffre romain :  ");
gets(str);
printf("%d\n",convertir(str));
}
while (strlen(str));
}

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
vendredi 29 janvier 2010
Statut
Membre
Dernière intervention
2 avril 2010

xD oui je suis dans la même galère que toi il y a 3 ans ^^ sa me travaille c'est 5 règles a incorporer dans ma fonction ! j'essaye de voir avec l'utilisation d'un try catch mais ce n'est pas facile ^^

J'espere que je ne t'est pas offensé et si c'est le cas je m'en excuse !
Sur ce je retourne a mon programme ...
Messages postés
5
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
28 mai 2010

Salut à toi, Pernotjln !

Donc, comme tu peux le voir, j'avais moi-même critiqué ce programme il y a de ça... 3ans, puisqu'à l'époque, je l'avais à faire en TP de C et ne savais pas coder.

Si tu veux apprendre à coder, je te conseille par exemple, [url]http://www.siteduzero.com//url qui t'apprendras de bonnes bases pour réaliser un tel code, surtout si tu dois toi même le réaliser pour un TP ;)

Bon courage !
Messages postés
2
Date d'inscription
vendredi 29 janvier 2010
Statut
Membre
Dernière intervention
2 avril 2010

Ce programme est faux tu ne tient pas compte des règles qui s'appliquent aux nombre romain !

- Au plus, trois répétitions consécutives de M, C, X et I.
- Au plus, une seule occurrence D, L et V.
- Un seul C peut préfixer un M ou un D. Les chiffres après M ou D représentent une valeur qui ne peut être supérieure à 99.
- Un seul X peut préfixer un C ou un L. Les chiffres après C ou L représentent une valeur qui ne peut être supérieure à 9.
- Un seul I peut préfixer un X ou un V. Le chiffre préfixé ne peut apparaître qu'à la fin du nombre.

Or ta capture d'écran nous montre que CVV = 110 ce qui est impossible car l'occurrence V ne peut pas apparaitre deux fois !
Messages postés
7
Date d'inscription
mercredi 6 février 2002
Statut
Membre
Dernière intervention
7 novembre 2005

Merci pour le commentaire
Voire que programme est posté le 19/03/2002, alors âpres 5 ans je ne crois pas que j'ai la même logique de programmation ni de réflexion
à l'INSA de Lyon la logique étais comme suit :
XIX=X+(IX) et pas (XI)+X
Puisque tout le math grec a été repris des arabes, je crois logique tout ça
De toute façon voila de quoi s'amuser c'est un petit programme qui donne motivation a le compléter
Tiens, à toi de le corriger voir que tu viens d'arriver dans notre communauté :)
Bienvenue tuckbess
Messages postés
5
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
28 mai 2010

j'ai pas compté en romain depuis une dizaine d'années mais il me semblait que XIX était plus proche de 19 que de 21 comme ton programme semble l'affirmer.
de plus il me semblait aussi que 3 c'était plutot III que IIV ou encore VIIX voire IIVXXLL, je pense qu'avec un petit peu d'imagination il y a de quoi passer quelques nuits blanches.
à bon programmeur!!! salut
Afficher les 7 commentaires

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.