Algorithmie chiffres romains conversion en chiffres arabes [Résolu]

jeffreynaz 32 Messages postés lundi 24 janvier 2011Date d'inscription 26 octobre 2011 Dernière intervention - 24 janv. 2011 à 15:31 - Dernière réponse : cptpingu 3827 Messages postés dimanche 12 décembre 2004Date d'inscription 6 octobre 2018 Dernière intervention
- 24 janv. 2011 à 18:22
Voila je débute en algo et j'aimerais savoir si un peu d'aide serait possible

voila mon problème :
CHIFFRES ROMAINS

symboles d’écriture : M pour 1000, D pour 500,C pour 100,L pour 50,X pour 10,V pour 5,I pour 1

règles d’écritures :

- un symbole n’apparaît pas plus de trois fois
- si un symbole devrait apparaître 4 fois on utilise le symbole de la valeur supérieures précédé du symbolique normal
- la valeur du nombre romain le plus grand est 3999

je dois écrire la fonction Romain qui reçoit le tableau en paramètre et un nombre entier qui doit être retourné sous forme romaine ou erreur si le nombre est plus grand que 3999
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
cptpingu 3827 Messages postés dimanche 12 décembre 2004Date d'inscription 6 octobre 2018 Dernière intervention - 24 janv. 2011 à 16:16
3
Merci
Poste ton code. Je te rappelle que l'on aide à corriger, mais que l'on ne fait pas les exercices des étudiants.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question

Merci cptpingu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cptpingu
cptpingu 3827 Messages postés dimanche 12 décembre 2004Date d'inscription 6 octobre 2018 Dernière intervention - 24 janv. 2011 à 18:22
1
Merci
Ok, dans ce cas:

Quelques petites simplifications:

mille := nombre/1000
cent := (nombre - (mille*1000))/100
dix := (nombre - (mille*1000) - (cent*100))/10
un := nombre%10


mille := nombre / 1000
cent := (nombre % 1000) / 100
dix := (nombre % 100) / 10
un := nombre%10

Équivaut d'ailleurs à:

mille : = (nombre % 10000) / 1000
cent := (nombre % 1000) / 100
dix := (nombre % 100) / 10
un := (nombre % 10) / 1

Pour i de 0 à mille pas de 1
afficher ("M")
Fin Pour

Ok.

Si cent/5 = 0
Afficher ("D")
cent := cent-5
Fin si


Ok, on peut aussi faire:
Si cent > 5
Afficher ("D")
cent : = cent-5
Fin si


Pour i de 0 a cent pas de 1
afficher ("C")
Fin pour


Dans la consigne, il est dit que s'il y a 4 fois le même symbole, on prend le symbole du dessus précédé de I.
Si cent >= 4 alors
afficher("ID")
sinon
Pour i de 0 a cent pas de 1
afficher ("C")
Fin pour
fin si


En espérant t'avoir aidé. Le mieux serait de poster la version C de ce code, afin de le tester :)

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Commenter la réponse de cptpingu
jeffreynaz 32 Messages postés lundi 24 janvier 2011Date d'inscription 26 octobre 2011 Dernière intervention - 24 janv. 2011 à 17:32
0
Merci
a oui oui je ne suis pas la pour que l'on me fasse le boulot j'ai posté le sujet avant pour avoir le temps d tout copier

avant toute chose dans mon sujet ils conseillent d'utiliser les opérateurs div et mod mais comme je n'y comprend rien j'ai trouvé une autre technique qui je pense est un peu plus longue

donc voila mon algorithme





fonction ROMAIN_CHIFFRES (t_romain:s_romain, nombre : entier): caractères
VAR
mille,cent,dix,un : entier
i : entier

Début

si nombre > 3999
retourner ("Erreur le nombre est supérieur à 3999")
sinon
mille := nombre/1000
cent := (nombre - (mille*1000))/100
dix := (nombre - (mille*1000) - (cent*100))/10
un := nombre%10

//Ci dessus je découpe le nombre en milliers,centaines,dizaines,et unités

//Ci dessous l'algorithme affiche pas a pas les chiffres romain en traitant d'abord les milliers

Pour i de 0 à mille pas de 1
afficher ("M")
Fin Pour
Si cent/5 = 0
Afficher ("D")
cent := cent-5
Fin si

// Ici les centaines et je répète ce pour et ce if pour les dizaines et le unités

Pour i de 0 a cent pas de 1
afficher ("C")
Fin pour
Si dix/5 = 0
afficher ("L")
dix := dix - 5
Fin si
Commenter la réponse de jeffreynaz

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.