Fournir un nombre en chiffre arabe, le glisser vers la conversion en romain. Exercice de style : réaliser la conversion avec le minimum de code. Une solution, la récursivité. Tout l'algorithme est dans la constante (mais les romains ne changeront plus leur numérotation).
Commenter, c'est bien. Réfléchir avant, c'est mieux. Un peu de réflexion aurait permis de se rendre compte que le IF suivi du CASE constituait le coeur de l'algorithme...
J'ai quelques remarques ou suggestions à formuler...
Que se passe-t-il si on transmet une chaine vide à la fonction fromain ?
Réponse : Le résultat est indéfini...
"val(n[1],ch,err)" : que fait-on du code d'erreur Err ?
Réponse : il est ignoré !
"if ch in [5..8]" et plus plus loin, tu utilises une structure Case pour les autres chiffres. C'est à dire que Ch sera évalué plusieurs fois alors qu'une seule structure Case rendait le code plus simple et plus efficace.
La constante Rom mériterait d'être déclarée au niveau de la fonction fromain car elle n'a pas à être connue de l'extérieur.
Enfin, dans toute fonction, il est de bon ton d'initaliser le résultat dès le départ pour éviter des résultats erratiques en cas de sortie brutale. Ce conseil vaut doublement quand on fait appel à la récursivité pour traiter un problème.
Pour terminer sur une note positive, c'est là une bonne idée que tu as eue de proposer une conversion en chiffres romains. Puisque c'est ton premier source publié sur ce site, je t'encourage à poursuivre.
6/10 , je suis gentil
@+
@rt31
Que se passe-t-il si on transmet une chaine vide à la fonction fromain ?
Réponse : Le résultat est indéfini...
"val(n[1],ch,err)" : que fait-on du code d'erreur Err ?
Réponse : il est ignoré !
"if ch in [5..8]" et plus plus loin, tu utilises une structure Case pour les autres chiffres. C'est à dire que Ch sera évalué plusieurs fois alors qu'une seule structure Case rendait le code plus simple et plus efficace.
La constante Rom mériterait d'être déclarée au niveau de la fonction fromain car elle n'a pas à être connue de l'extérieur.
Enfin, dans toute fonction, il est de bon ton d'initaliser le résultat dès le départ pour éviter des résultats erratiques en cas de sortie brutale. Ce conseil vaut doublement quand on fait appel à la récursivité pour traiter un problème.
Pour terminer sur une note positive, c'est là une bonne idée que tu as eue de proposer une conversion en chiffres romains. Puisque c'est ton premier source publié sur ce site, je t'encourage à poursuivre.
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.