Algorithmie chiffres romains conversion en chiffres arabes

Résolu
jeffreynaz Messages postés 32 Date d'inscription lundi 24 janvier 2011 Statut Membre Dernière intervention 26 octobre 2011 - 24 janv. 2011 à 15:31
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 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
A voir également:

3 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
24 janv. 2011 à 16:16
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
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
24 janv. 2011 à 18:22
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
1
jeffreynaz Messages postés 32 Date d'inscription lundi 24 janvier 2011 Statut Membre Dernière intervention 26 octobre 2011
24 janv. 2011 à 17:32
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
0
Rejoignez-nous