Advertisement
Guest User

Untitled

a guest
Feb 26th, 2020
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.10 KB | None | 0 0
  1. package numeration;
  2.  
  3. /**
  4.  * Nombres en chiffres romains.
  5.  *
  6.  * @author François Schumacker
  7.  *
  8.  */
  9.  
  10. public class ChiffresRomains {
  11.     /**
  12.      * Détermine la valeur décimale d'un nombre exprimé en chiffres romains. </br>
  13.      * Version ITERATIVE.
  14.      *
  15.      * @param nombre Nombre exprimé en chiffres romains.
  16.      * @return Valeur décimale du nombre.
  17.      */
  18.     public static int chiffresRomainsVersDecimalIteratif(String nombre) {
  19.         int result = 0;
  20.         char tab[] = new char[nombre.length()];
  21.         for (int i = 0; i < nombre.length(); i++) {
  22.             tab[i] = nombre.charAt(i);
  23.         }
  24.         for (int i = 0; i < tab.length - 1; i++) {
  25.             if(valeurChiffre(tab[i]) < valeurChiffre(tab[i + 1])) {
  26.                 result -= valeurChiffre(tab[i]);
  27.             } else {
  28.                 result += valeurChiffre(tab[i]);
  29.             }
  30.         }
  31.         result += valeurChiffre(tab[nombre.length() - 1]);
  32.         return result;
  33.     }
  34.  
  35.     /**
  36.      * Détermine la valeur décimale d'un nombre exprimé en chiffres romains. </br>
  37.      * Version RECURSIVE.
  38.      *
  39.      * @param nombre Nombre exprimé en chiffres romains.
  40.      * @return Valeur décimale du nombre.
  41.      */
  42.     public static int chiffresRomainsVersDecimalRecursif(String nombre) {
  43.         if(nombre.length() == 1) {
  44.             return valeurChiffre(nombre.charAt(0));
  45.         }
  46.         if(valeurChiffre(nombre.charAt(0)) < valeurChiffre(nombre.charAt(1))) {
  47.             return -(valeurChiffre(nombre.charAt(0))) + chiffresRomainsVersDecimalRecursif(nombre.substring(1));
  48.         } else {
  49.             return valeurChiffre(nombre.charAt(0)) + chiffresRomainsVersDecimalRecursif(nombre.substring(1));
  50.         }
  51.        
  52.     }
  53.  
  54.     /**
  55.      * Retourne la valeur décimale d'un chiffre romain.
  56.      *
  57.      * @param c Un chiffre romain (M, D, C, L, X, V, I)
  58.      * @return La valeur décimale du chiffre romain
  59.      */
  60.     private static int valeurChiffre(char c) {
  61.         int valeur = 0;
  62.         switch (c) {
  63.         case 'M':
  64.             valeur = 1000;
  65.             break;
  66.         case 'D':
  67.             valeur = 500;
  68.             break;
  69.         case 'C':
  70.             valeur = 100;
  71.             break;
  72.         case 'L':
  73.             valeur = 50;
  74.             break;
  75.         case 'X':
  76.             valeur = 10;
  77.             break;
  78.         case 'V':
  79.             valeur = 5;
  80.             break;
  81.         case 'I':
  82.             valeur = 1;
  83.             break;
  84.         }
  85.         return valeur;
  86.     }
  87.  
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement