ROMANOP : UN UTILITAIRE POUR LES NOMBRES ROMAINS (CONVERSION ROMAN -> ENTIERS, E

nosferaltu0 Messages postés 36 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 6 juin 2008 - 3 juin 2008 à 15:01
vladmanchev Messages postés 8 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 22 novembre 2011 - 3 juin 2008 à 15:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/46867-romanop-un-utilitaire-pour-les-nombres-romains-conversion-roman-entiers-entiers-romains-calculs

vladmanchev Messages postés 8 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 22 novembre 2011
3 juin 2008 à 15:57
D'accord.

Mais il existe un autre problème.

Etant donné que je dois parcourir (dans le bon ordre) les valeurs (int dans l'arraylist values) dans la méthode toRoman() et les clés (strings dans n'importe quel ordre, ceux-là) dans la méthode toInt() je n'y vois pas d'améliorations concrètes si ce n'est au niveau du temps d'accès. Mais je pense que cela ajouterait de la complexité au code (complexité au niveau codage pas calcul) pour pas grand chose.
nosferaltu0 Messages postés 36 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 6 juin 2008
3 juin 2008 à 15:37
Tu peux utiliser un tableau de String :
private static final chiffres={"M","CM",..};
et c'est ce tableau que tu parcours. Le string te permet d'accéder à la valeur de l'élément grâce à la hashtable.
Je pense qu'au niveau complexité c'est mieux.

On pourrait aussi parcourir le nombre de droite à gauche mais comme j'y vois je ne pense pas que ce serait mieux.
vladmanchev Messages postés 8 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 22 novembre 2011
3 juin 2008 à 15:14
Par contre, effectivement, il me parait raisonnable de changer les modificateurs des atributs keys et values de façon à les rendre static et final.
vladmanchev Messages postés 8 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 22 novembre 2011
3 juin 2008 à 15:12
Le problème avec les HashTable c'est que l'ordre n'est pas défini.

Si tu regardes bien le code de la fonction toRoman, tu verras que ça ne peut pas fonctionner avec une HashTable (puisque les valeurs ne seraient pas dans le bon ordre).

Mais si je change le code de cette fonction pour mettre une HashTable, je ne sais pas si je gagnerais vraiment en performance.

As-tu une solution qui améliorerait la performance du code à me proposer?
nosferaltu0 Messages postés 36 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 6 juin 2008
3 juin 2008 à 15:01
Tu ferais mieux d'utiliser une Hashtable plutôt que des ArrayList ce serait plus performant. Tu dois d'ailleur pouvoir la rendre static et final.
private static final Hashtable<String, Integer> chiffres_romain = new Hashtable<String, Integer>();
Rejoignez-nous