Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package numeration;
- /**
- * Nombres en chiffres romains.
- *
- * @author François Schumacker
- *
- */
- public class ChiffresRomains {
- /**
- * Détermine la valeur décimale d'un nombre exprimé en chiffres romains. </br>
- * Version ITERATIVE.
- *
- * @param nombre Nombre exprimé en chiffres romains.
- * @return Valeur décimale du nombre.
- */
- public static int chiffresRomainsVersDecimalIteratif(String nombre) {
- int result = 0;
- char tab[] = new char[nombre.length()];
- for (int i = 0; i < nombre.length(); i++) {
- tab[i] = nombre.charAt(i);
- }
- for (int i = 0; i < tab.length - 1; i++) {
- if(valeurChiffre(tab[i]) < valeurChiffre(tab[i + 1])) {
- result -= valeurChiffre(tab[i]);
- } else {
- result += valeurChiffre(tab[i]);
- }
- }
- result += valeurChiffre(tab[nombre.length() - 1]);
- return result;
- }
- /**
- * Détermine la valeur décimale d'un nombre exprimé en chiffres romains. </br>
- * Version RECURSIVE.
- *
- * @param nombre Nombre exprimé en chiffres romains.
- * @return Valeur décimale du nombre.
- */
- public static int chiffresRomainsVersDecimalRecursif(String nombre) {
- if(nombre.length() == 1) {
- return valeurChiffre(nombre.charAt(0));
- }
- if(valeurChiffre(nombre.charAt(0)) < valeurChiffre(nombre.charAt(1))) {
- return -(valeurChiffre(nombre.charAt(0))) + chiffresRomainsVersDecimalRecursif(nombre.substring(1));
- } else {
- return valeurChiffre(nombre.charAt(0)) + chiffresRomainsVersDecimalRecursif(nombre.substring(1));
- }
- }
- /**
- * Retourne la valeur décimale d'un chiffre romain.
- *
- * @param c Un chiffre romain (M, D, C, L, X, V, I)
- * @return La valeur décimale du chiffre romain
- */
- private static int valeurChiffre(char c) {
- int valeur = 0;
- switch (c) {
- case 'M':
- valeur = 1000;
- break;
- case 'D':
- valeur = 500;
- break;
- case 'C':
- valeur = 100;
- break;
- case 'L':
- valeur = 50;
- break;
- case 'X':
- valeur = 10;
- break;
- case 'V':
- valeur = 5;
- break;
- case 'I':
- valeur = 1;
- break;
- }
- return valeur;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement