Besoin d aide svp

Tag -  
 Tag -
salut, je cherche a creer un programme en java pour transcrire des chiffres romains (I, IX, L...) en nombres normaux (1,9, 50...).
comme je debute, j ai un peu de mal, merci a ceux qui pourront m aider.
Tag

2 réponses

  1. Marden Messages postés 1075 Statut Membre 210
     
    Quand tu ne sais pas, tu fais une recherche dans CCM, sinon dans Google / "chiffres romains" et tu finis par trouver, par exemple :
    http://www.faulquemont.com/temperatures.html
    Et comme on sait que tu as besoin d'aide, tu mets comme Titre du message "conversion chiffres romains".
    (cf Fernand Reynaud : "Ici, on vend de belles oranges pas chères !")
    0
    1. Tag
       
      merci bien de vos reponses, ca m aide vraiment bien... ;-)
      0
  2. Hacktrack
     
    Pas besoin d'aller voir sur CCM: voilà le code tout chaud sur une assiette!
    Il y a 2 classes: Launcher (qui démarre l'application) et Translater (qui contient la logique de calcul)

    ******************************************************
    CLASSE Launcher
    ******************************************************

    package RomanFigures;

    /**
    * Title: Launcher
    * Description: Launcher class for class Translater
    *
    *@author HackTrack
    *@created March 4, 2002
    *@version 1.0
    */

    public class Launcher {

    public Launcher() { }

    public static void main(String args[]) {
    try {
    Translater translater = Translater.getInstance();
    String number = "MCMLXXXIX";//1989
    System.out.println("Romain: " + number + " Arabe: " + translater.translate(number));
    number = "DXXXIII";//533
    System.out.println("Romain: " + number + " Arabe: " + translater.translate(number));
    number = "MMMDCXCVII";//3697
    System.out.println("Romain: " + number + " Arabe: " + translater.translate(number));
    }
    catch(Exception e) {
    System.out.println(e.getMessage());
    }

    }
    }

    ******************************************************
    CLASSE Translater
    ******************************************************

    package RomanFigures;

    /**
    * Cette classe permet de convertir un nombre romain en valeur décimale.
    *
    *@author HackTrack
    *@created March 4, 2002
    *@version 1.0
    */
    public class Translater {
    public final static int M = 1000;
    public final static int C = 100;
    public final static int L = 50;
    public final static int X = 10;
    public final static int V = 5;
    public final static int I = 1;
    private static Translater instance;

    private Translater() {
    instance = this;
    }

    /**
    * Calcule et renvoie la valeur décimale correpondant au nombre romain
    *
    *@param romanNumber Le nombre romain à convertir
    *@return La valeur décimale correspondant au nombre romain
    *@exception Exception Lorsque un caractère rencontré est inconnu
    */

    public int translate(String romanNumber) throws Exception {
    int result = 0;
    String romanGroup = "";

    // On teste les lettres par deux pour les cas particuliers
    // tels que IX, CM,XL,...
    for(int i = 0; i < romanNumber.length() - 1; i++) {
    int firstLetterValue = calculate(romanNumber.charAt(i));
    int secondLetterValue = calculate(romanNumber.charAt(i + 1));
    if(firstLetterValue < secondLetterValue) {
    result += (secondLetterValue - firstLetterValue);
    i++;
    }
    else {
    result += firstLetterValue;
    // On teste si on a atteint la fin de la chaîne (auquel cas il n'y
    // aura alors plus moyen de sélectionner un bloc de deux lettres
    // ultérieurement
    if(i == romanNumber.length() - 2) {
    result += secondLetterValue;
    }
    }
    }
    return result;
    }

    /**
    *@param romanLetter Une chiffre romain
    *@return La valeur correspondant au chiffre romain
    *@exception Exception Lorsque un caractère rencontré est inconnu
    */
    private int calculate(char romanLetter) throws Exception {
    int value = 0;

    switch (romanLetter) {
    case 'M':
    value = 1000;
    break;
    case 'C':
    value = 100;
    break;
    case 'D':
    value = 500;
    break;
    case 'L':
    value = 50;
    break;
    case 'X':
    value = 10;
    break;
    case 'V':
    value = 5;
    break;
    case 'I':
    value = 1;
    break;
    default:
    throw new Exception("Lettre non reconnue");
    }
    return value;
    }

    /**
    * Renvoie une instance unique de Translater
    *
    *@return L'instance unique de Translater
    */
    public static Translater getInstance() {
    if(instance == null)
    return new Translater();
    return instance;
    }
    }

    ;-)
    HackTrack
    0