begin process at 2012 02 10 19:10:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths et Algorithmes

 > NOMBRE ENTIER OU MONTANT EN LETTRES (FRANÇAIS & SUISSE)

NOMBRE ENTIER OU MONTANT EN LETTRES (FRANÇAIS & SUISSE)


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths et Algorithmes Classé sous :en lettres, ecrire nombre, algo Niveau :Débutant Date de création :01/10/2008 Date de mise à jour :24/11/2008 06:43:53 Vu / téléchargé :8 584 / 290

Auteur : xael2

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Voici une classe permettant de traduire un nombre entier compris entre zéro 999 milliards, ce qui doit être suffisant au moins pour faire de la facturation. Spécificité, les syntaxes française (quatre-vingt, etc) et belge (octante, etc) sont implémentées.
J'ai ajouté une méthode "convertirEnEuros" dont je ne vous explique pas l'utilité, qui accepte les nombres décimaux.
Tous les mots employés sont donnés en dur pour l'instant. J'ai appliqué les règles grammaticales de la documentation qui est en ma possession mais le débat est ouvert si vous êtes doué en orthographe...
J'ai également ajouté une interface graphique, qui s'intégrera simplement dans un environnement de travail existant.
Vous pouvez compiler la source, ou utiliser le fichier .jar pour lancer directement l'utilitaire.

Source

  • package javax.xael;
  • /**
  • * @author Alexandre Alçuyet
  • * @date 2008-09-30
  • * @comment Voici une classe permettant de traduire (en français...) un nombre
  • * entier compris entre zéro 999 milliards, ce qui doit être suffisant au moins
  • * pour faire de la facturation. J'ai ajouté une méthode "convertirEnEuros" dont
  • * je ne vous explique pas l'utilité, qui accepte les nombres décimaux.
  • * Tous les mots employés sont donnés en dur pour l'instant. J'ai appliqué
  • * les règles grammaticales de la documentation qui est en ma possession mais le
  • * débat est ouvert si vous êtes doué en orthographe...
  • */
  • public class NombreEnLettres {
  • public final static String FR = "FR" ;
  • public final static String BE = "BE" ;
  • static String stx = FR ;
  • public static void main(String[] args) {
  • /*
  • * Quelques exemples d'utilisation
  • */
  • try {
  • for(int i=0; i<100; i++)
  • System.out.println(i + " : ["
  • + convertirEntier((long)i, NombreEnLettres.FR) + "]");
  • for(int i=0; i<1000; i++)
  • System.out.println(i + " : ["
  • + convertirEntier((long)i, NombreEnLettres.BE) + "]");
  • for(long i=1L ; i<1000000000001L ; i=i*10)
  • System.out.println(i + " : ["
  • + convertirEntier((long)i, NombreEnLettres.FR) + "]");
  • } catch(NombreTropGrandException e) {
  • System.out.println(e.getMessage()) ;
  • }
  • double doub = 2451150.23D ;
  • System.out.println(doub + " : "
  • + convertirEnEuros(doub,NombreEnLettres.FR));
  • }
  • public static String convertirEnEuros(double nombre, String syntaxe) {
  • String doubleEnString = String.format(
  • java.util.Locale.FRENCH,"%.2f", nombre);
  • String strEntiere = doubleEnString.substring(
  • 0,doubleEnString.length() -3) ;
  • String strFraction = doubleEnString.substring(
  • doubleEnString.length() -2, doubleEnString.length()) ;
  • String mot = "" ;
  • try {
  • if(!(strEntiere.equals("0")))
  • mot = convertirEntier(Long.parseLong(strEntiere), syntaxe)
  • + " euro"
  • + ((Long.parseLong(strEntiere) > 1L)?"s":"")
  • + (!strFraction.equals("00") ? " et " : "") ;
  • if(!(strFraction.equals("00")))
  • mot = mot + convertirEntier(Long.parseLong(strFraction), syntaxe)
  • + " cent"
  • + ((Long.parseLong(strFraction) > 1L)?"s":"");
  • } catch(NombreTropGrandException e) {
  • mot = e.getMessage() ;
  • }
  • return mot ;
  • }
  • public static String convertirEntier(long nombre, String syntaxe)
  • throws NombreTropGrandException {
  • stx = syntaxe ;
  • if(nombre > 999999999999L)
  • throw new NombreTropGrandException(
  • "Le nombre demandé est trop grand...") ;
  • else
  • return entierEnLettres(String.valueOf(nombre));
  • }
  • /*
  • * transforme en lettres de zéro à 999 milliards (syntaxe française)
  • */
  • private static String entierEnLettres(String strNombre) {
  • int longueur ;
  • String groupe ;
  • String chaineAConvertir ;
  • String mot = "";
  • final String MILLIARD = " milliard";
  • final String MILLION = " million";
  • final String MILLE = " mille";
  • while (strNombre.length() > 0) {
  • longueur = strNombre.length() ;
  • groupe = "" ;
  • chaineAConvertir = "" ;
  • if(longueur > 9)
  • groupe = MILLIARD ;
  • else if(longueur > 6)
  • groupe = MILLION ;
  • else if(longueur > 3)
  • groupe = MILLE ;
  • else
  • return (mot + dechiffrage(strNombre)).trim() ;
  • long test = longueur ;
  • //Si le nombre de chiffres est multiple de 3
  • if (((long)longueur % 3) == 0) {
  • chaineAConvertir = strNombre.substring(0, 3) ;
  • strNombre = strNombre.substring(3) ;
  • if(Integer.parseInt(chaineAConvertir) > 1)
  • mot = mot + dechiffrage(chaineAConvertir) + groupe
  • + (!groupe.equals(MILLE) ? "s" : "");
  • else if(Integer.parseInt(chaineAConvertir) > 0)
  • mot = mot + groupe ;
  • } else {
  • if (((test - 1) % 3) == 0) {
  • chaineAConvertir = strNombre.substring(0, 1) ;
  • strNombre = strNombre.substring(1) ;
  • } else {
  • chaineAConvertir = strNombre.substring(0, 2) ;
  • strNombre = strNombre.substring(2) ;
  • }
  • if(chaineAConvertir.equals("1") && groupe.equals(MILLE))
  • mot = mot + groupe ;
  • else
  • mot = mot + sousDechiffrage(chaineAConvertir) + groupe
  • + ((Integer.parseInt(chaineAConvertir) > 1)
  • && (!groupe.equals(MILLE)) ? "s" : "" ) ;
  • }
  • }
  • return mot.trim() ;
  • }
  • /*
  • * Transforme en lettres de 0 à 999
  • */
  • private static String dechiffrage(String strNombre) {
  • String plu = "s" ;
  • String mot = "" ;
  • final String CENT = "cent" ;
  • String chaineAConvertir = "" ;
  • int longueur = strNombre.length() ;
  • //Si le nombre de chiffres est multiple de 3
  • if (((long)longueur % 3) == 0) {
  • chaineAConvertir = strNombre.substring(0, 1) ;
  • if(Integer.parseInt(chaineAConvertir)>1)
  • mot = mot + sousDechiffrage(chaineAConvertir);
  • if(Integer.parseInt(chaineAConvertir)>0)
  • mot = mot + " " + CENT +
  • //gestion du "s" de "CENT"
  • ((!(Integer.parseInt(strNombre.substring(1)) > 0))
  • && (Integer.parseInt(chaineAConvertir) > 1) ? "s" : "") ;
  • strNombre = strNombre.substring(1) ;
  • if(Integer.parseInt(strNombre) > 0)
  • mot = mot + sousDechiffrage(strNombre) ;
  • }
  • //sinon il est plus petit que 100 mot direct
  • else
  • return sousDechiffrage(strNombre) ;
  • return String.format("%s", mot) ;
  • }
  • /*
  • * transforme en lettres de zéro à 99 syntaxe française par défaut,
  • * remplacer "String stx = FR ;" par "String stx = BE ;" pour la syntaxe
  • * belge
  • */
  • private static String sousDechiffrage(String nombre) {
  • /*
  • final String FR = "FR" ;
  • final String BE = "BE" ;
  • String stx = FR ;
  • */
  • String mot = "" ;
  • int longueur ;
  • String et = "" ;
  • String[] tabnb = { "zéro", "un", "deux", "trois", "quatre", "cinq",
  • "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize",
  • "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf" } ;
  • String[] tabdix = { "vingt", "trente", "quarante", "cinquante",
  • //"soixante", "soixante", "quatre-vingt", "quatre-vingt" } ;
  • "soixante", "septante", "quatre-vingt", "nonante" } ;
  • while(nombre.length() > 0) {
  • longueur = nombre.length();
  • et = "" ;
  • switch(longueur) {
  • case 1 :
  • mot = mot + " " + tabnb[Integer
  • .parseInt(nombre)] + et ;
  • nombre = "" ;
  • break ;
  • case 2 :
  • if(Integer.parseInt(nombre) < 20) {
  • mot = mot + " " + tabnb[Integer
  • .parseInt(nombre)] + et ;
  • nombre = "" ;
  • } else if(Integer.parseInt(nombre) >= 20) {
  • //gestion du "et-un" au dessus de 20
  • if((Integer.parseInt(nombre.substring(1,2)) == 1)
  • &&(((Integer.parseInt(nombre) < 80)
  • && stx.equals(FR))||stx.equals(BE)))
  • et = " et" ;
  • //gestion du "s" de quatre vingts
  • else if ((Integer.parseInt(nombre) == 80)
  • && stx.equals(FR))
  • et = "s" ;
  • mot = mot + " " + tabdix[Integer
  • .parseInt(nombre.substring(0, 1))
  • //gestion du soixante (dix) et quatre-vingt (dix)
  • -
  • (((Integer.parseInt(nombre.substring(0, 1)) == 7) ||
  • (Integer.parseInt(nombre.substring(0, 1)) == 9)) &&
  • stx.equals(FR) ? 3 : 2 )
  • ] + et ;
  • if(((Integer.parseInt(nombre) < 70) && stx.equals(FR))
  • || stx.equals(BE))
  • nombre = nombre.substring(1, 2) ;
  • else if(Integer.parseInt(nombre) < 80)
  • nombre = (Integer.parseInt(nombre) - 60) + "" ;
  • else if(Integer.parseInt(nombre) < 100)
  • nombre = (Integer.parseInt(nombre) - 80) + "" ;
  • }
  • }
  • }
  • //enlever le zéro inutile
  • if (mot.trim().length() != tabnb[0].length())
  • mot = mot.replaceFirst( " " + tabnb[0], "");
  • //remplacer "quatre-vingt" par octante (quoi? t'as un blème ?)
  • if (stx.equals(BE))
  • mot = mot.replaceFirst(tabdix[6], "octante");
  • return String.format("%s", mot) ;
  • }
  • }
  • class NombreTropGrandException extends Exception {
  • public NombreTropGrandException(String message) {
  • super(message);
  • }
  • }
package javax.xael;

/**
 * @author Alexandre Alçuyet
 * @date 2008-09-30
 * @comment Voici une classe permettant de traduire (en français...) un nombre
 * entier compris entre zéro 999 milliards, ce qui doit être suffisant au moins
 * pour faire de la facturation. J'ai ajouté une méthode "convertirEnEuros" dont
 * je ne vous explique pas l'utilité, qui accepte les nombres décimaux.
 * Tous les mots employés sont donnés en dur pour l'instant. J'ai appliqué
 * les règles grammaticales de la documentation qui est en ma possession mais le
 * débat est ouvert si vous êtes doué en orthographe...
 */

public class NombreEnLettres {
    public final static String FR = "FR" ;
    public final static String BE = "BE" ;
    static String stx = FR ;
   
   public static void main(String[] args) {
       /*
        * Quelques exemples d'utilisation
        */
       try {
           for(int i=0; i<100; i++)
               System.out.println(i + " : [" 
                       + convertirEntier((long)i, NombreEnLettres.FR) + "]");
       
           for(int i=0; i<1000; i++)
               System.out.println(i + " : ["
                       + convertirEntier((long)i, NombreEnLettres.BE) + "]");
           
           for(long i=1L ; i<1000000000001L ; i=i*10)
               System.out.println(i + " : [" 
                       + convertirEntier((long)i, NombreEnLettres.FR) + "]");
       
       } catch(NombreTropGrandException e) {
           System.out.println(e.getMessage()) ;
       }
       
       double doub = 2451150.23D ;
       System.out.println(doub + " : "
               + convertirEnEuros(doub,NombreEnLettres.FR));
   }
    
   public static String convertirEnEuros(double nombre, String syntaxe) {  
        String doubleEnString = String.format(
                java.util.Locale.FRENCH,"%.2f", nombre);
        String strEntiere = doubleEnString.substring(
                0,doubleEnString.length() -3) ;
        String strFraction = doubleEnString.substring(
                doubleEnString.length() -2, doubleEnString.length()) ;
        
        String mot = "" ;
        
        try {
        if(!(strEntiere.equals("0")))
            mot = convertirEntier(Long.parseLong(strEntiere), syntaxe)
                    + " euro"
                    + ((Long.parseLong(strEntiere) > 1L)?"s":"")
                    + (!strFraction.equals("00") ? " et " : "") ;
        if(!(strFraction.equals("00")))
            mot = mot + convertirEntier(Long.parseLong(strFraction), syntaxe)
                    + " cent"
                    + ((Long.parseLong(strFraction) > 1L)?"s":"");        
        } catch(NombreTropGrandException e) {
            mot = e.getMessage() ;
        }
        return mot ;        
   }
   
   public static String convertirEntier(long nombre, String syntaxe)
           throws NombreTropGrandException {
       stx = syntaxe ; 
       if(nombre > 999999999999L)
           throw new NombreTropGrandException(
                   "Le nombre demandé est trop grand...") ;
       else
           return entierEnLettres(String.valueOf(nombre));
   }
   
   /*
    * transforme en lettres de zéro à 999 milliards (syntaxe française)
    */
   private static String entierEnLettres(String strNombre) {
       int longueur ;
       String groupe ;
       String chaineAConvertir ;
       String mot = "";
       final String MILLIARD = " milliard";
       final String MILLION = " million";
       final String MILLE = " mille";
       
       while (strNombre.length() > 0) {
           
           longueur = strNombre.length() ;
           groupe = "" ;
           chaineAConvertir = "" ;
           
           if(longueur > 9)
               groupe = MILLIARD ;
           
           else if(longueur > 6)
               groupe = MILLION ;
           
           else if(longueur > 3)
               groupe = MILLE ;
           
           else
               return (mot + dechiffrage(strNombre)).trim() ;
           
           long test = longueur ;
           
           //Si le nombre de chiffres est multiple de 3
           if (((long)longueur % 3) == 0) {
               chaineAConvertir = strNombre.substring(0, 3) ;
               strNombre = strNombre.substring(3) ;
               
               if(Integer.parseInt(chaineAConvertir) > 1)
                   mot = mot + dechiffrage(chaineAConvertir) + groupe
                           + (!groupe.equals(MILLE) ? "s" : "");
               
               else if(Integer.parseInt(chaineAConvertir) > 0)
                   mot = mot + groupe ;
           
           } else {
               if (((test - 1) % 3) == 0) {
                   chaineAConvertir = strNombre.substring(0, 1) ;
                   strNombre = strNombre.substring(1) ;
               
               } else {
                   chaineAConvertir = strNombre.substring(0, 2) ;
                   strNombre = strNombre.substring(2) ;
               }
               if(chaineAConvertir.equals("1") && groupe.equals(MILLE))
                   mot = mot + groupe ;
               else
                   mot = mot + sousDechiffrage(chaineAConvertir) + groupe
                           + ((Integer.parseInt(chaineAConvertir) > 1)
                           && (!groupe.equals(MILLE)) ? "s" : "" ) ;
           }   
       }
       return mot.trim() ;
   }
   
   /*
    * Transforme en lettres de 0 à 999
    */
   private static String dechiffrage(String strNombre) {
       
       String plu = "s" ;
       String mot = "" ;
       final String CENT = "cent" ;
       String chaineAConvertir = "" ;
       int longueur = strNombre.length() ;
       
       //Si le nombre de chiffres est multiple de 3
       if (((long)longueur % 3) == 0) {
           
           chaineAConvertir = strNombre.substring(0, 1) ;
           
           if(Integer.parseInt(chaineAConvertir)>1)
               mot = mot + sousDechiffrage(chaineAConvertir);
           
           if(Integer.parseInt(chaineAConvertir)>0)
               mot = mot + " " + CENT  +
               //gestion du "s" de "CENT"
               ((!(Integer.parseInt(strNombre.substring(1)) > 0))
                       && (Integer.parseInt(chaineAConvertir) > 1) ? "s" : "") ;
           
           strNombre = strNombre.substring(1) ;
           
           if(Integer.parseInt(strNombre) > 0)
               mot = mot + sousDechiffrage(strNombre) ;
       }
       
       //sinon il est plus petit que 100 mot direct
       else
           return sousDechiffrage(strNombre) ;
       
       return String.format("%s", mot) ;     
   }

   /*
    * transforme en lettres de zéro à 99 syntaxe française par défaut,
    * remplacer "String stx = FR ;" par "String stx = BE ;" pour la syntaxe
    * belge
    */
   private static String sousDechiffrage(String nombre) {
       /*
       final String FR = "FR" ;
       final String BE = "BE" ;
       String stx = FR ;
       */
       String mot = "" ;
       int longueur ;
       String et = "" ;
       
       String[] tabnb = { "zéro", "un", "deux", "trois", "quatre", "cinq",
       "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize",
       "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf" } ;
       
       String[] tabdix = { "vingt", "trente", "quarante", "cinquante",
       //"soixante", "soixante", "quatre-vingt", "quatre-vingt" } ;
       "soixante", "septante", "quatre-vingt", "nonante" } ;
       
       while(nombre.length() > 0) {
           longueur = nombre.length();
           et = "" ;
           
           switch(longueur) {
               
               case 1 :
                   mot = mot + " " + tabnb[Integer
                           .parseInt(nombre)] + et ;
                   nombre = "" ;
                   break ;
               
               case 2 :
                   if(Integer.parseInt(nombre) < 20) {
                       mot = mot + " " + tabnb[Integer
                               .parseInt(nombre)] + et ;
                       nombre = "" ;
                   
                   } else if(Integer.parseInt(nombre) >= 20) {
                       
                       //gestion du "et-un" au dessus de 20
                       if((Integer.parseInt(nombre.substring(1,2)) == 1)
                               &&(((Integer.parseInt(nombre) < 80) 
                               && stx.equals(FR))||stx.equals(BE)))
                           et = " et" ;
                       
                       //gestion du "s" de quatre vingts
                       else if ((Integer.parseInt(nombre) == 80)
                               && stx.equals(FR))
                           et = "s" ;
                       
                       mot = mot + " " + tabdix[Integer
                               .parseInt(nombre.substring(0, 1))
                               //gestion du soixante (dix) et quatre-vingt (dix)
                               -
                               (((Integer.parseInt(nombre.substring(0, 1)) == 7) ||
                               (Integer.parseInt(nombre.substring(0, 1)) == 9)) &&
                               stx.equals(FR) ? 3 : 2 )
                               ] + et ;
                        
                        if(((Integer.parseInt(nombre) < 70) && stx.equals(FR))
                            || stx.equals(BE))
                            nombre = nombre.substring(1, 2) ;
                        
                        else if(Integer.parseInt(nombre) < 80)
                            nombre = (Integer.parseInt(nombre) - 60) + "" ;
                        
                        else if(Integer.parseInt(nombre) < 100)
                            nombre = (Integer.parseInt(nombre) - 80) + "" ;
                   }
           }
       }
       //enlever le zéro inutile        
       if (mot.trim().length() != tabnb[0].length())
           mot = mot.replaceFirst( " " + tabnb[0], "");
       
       //remplacer "quatre-vingt" par octante (quoi? t'as un blème ?)
       if (stx.equals(BE))
           mot = mot.replaceFirst(tabdix[6], "octante");
       
       return String.format("%s", mot) ;
   }
}

class NombreTropGrandException extends Exception {

    public NombreTropGrandException(String message) {
        super(message);
    }

}

 Conclusion

un truc marrant à programmer, c'est là qu'on se rend compte que la langue française n'est pas franchement simple et logique !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

01 octobre 2008 01:26:06 :
juste des "fotes"
01 octobre 2008 17:07:58 :
Implémentation de la syntaxe franco-belge, amélioration de l'outil GUI...
01 octobre 2008 17:12:04 :
mise à jour du source...
24 novembre 2008 06:43:53 :
Merci d'avoir réagit à prpos de la non-belgitude :) J'ai pris note et je modifierai le plus tôt possible cette affreuse coquille :)

 Sources du même auteur

Source avec Zip TRI TABLEAU D'INTEGER PAR DICHOTOMIE, MAJ
Source avec Zip TRI TABLEAU D'ENTIER PAR DICHOTOMIE
Source avec Zip MASTER MIND MODE CONSOLE

 Sources de la même categorie

IMPLÉMENTATION DE L'ENSEMBLE C AVEC JAVA par Scupper
CALCUL D'EXPONENTIEL ( PRÉCISION MODIFIABLE) par Scupper
Source avec Zip TRANSFORMATION D'UNE EXPRESSION ARITHMETIQUE (INFIXÉ) EN POS... par billatosco
PROBLÈME DES N-REINES par jojolemariole
Source avec Zip ARRAYMATRIX -MATRICE MULTIDIMENSIONELLE ET GÉNÉRIQUE- , IMP... par labandus

Commentaires et avis

Commentaire de petifa le 01/10/2008 11:22:40

slt xael2
je trouve ta source interessante, il va y avoir une autre source permettant de faire une conversion de lettre en chiffres ? :)
cette source a été bien programmée et est bien aboutie, bon  code

par contre quelques remarques sur le code :
- il aurait ptètre été bien d'avoir des commentaires sur certaines lignes, par exemple ligne 175, pourquoi ne pas mettre soixante-dix ? Mais bon ca m'a rapellé comment écrire les nonmbres :p
#  String[] tabdix = { "vingt", "trente", "quarante", "cinquante",
# "soixante", "soixante", "quatre-vingt", "quatre-vingt" } ;


- ligne 141
# Integer.parseInt(chaineAConvertir)
tu utilise cette fonction assez souvent, question de performance tu pourrais mettre dans une variable int et traiter cette variable, ainsi tu parserai moins de fois
int convertedNumber = Integer.parseInt(chaineAConvertir)

- et après ligne 207 (par exemple)
#  retour = retour + " " + tabdix[Integer.parseInt(nombre.substring(0, 1)) - 2] + et ;
deviendait
#  retour = retour + " " + tabdix[((int)convertedNumber/10) - 2] + et ;


Voila ce que j'en dit. A voir si c'est mieux ou pas
++ Petifa

Commentaire de xael2 le 01/10/2008 17:42:26

bonjour PETIFA,
merci pour tes apréciations, effectivement il y a une nouvelle version qui est disponible, car depuis hier je pensais qu'il existe pas mal de solutions de ce genre, mais peut être pas une qui puisse a la fournir la syntaxe française et belge (je ne suis pas belge, je vis à la Réunion...) donc j'ai fait cette modif et à présent je vais passer à autre chose.
Désolé pour les commentaires, ce sera sans doute l'objet de la prochaine mise à jour s'il y a lieu :p.
Je vais essayer de répondre à tes questions, mais tu verra que dans cette version cela a changé :
pourquoi soixante et quatre-vingt sont en double ? par souci de versatilité, l'expression qui récupère le mot des dixaines dans le tableau de noms récupère l'index du mot dans le nombre à traduire (chiffre des dizaines - 2). A partir de 70 ou de 90 on doit poursuivre le cycle jusqu'a dix-neuf au lieu de revenir à "un, deux, etc...". Donc si j'avais stocké soixante-dix et quatre-vingt-dix dans ces indices, j'aurais eu des expressions comme "soixante-dix onze", etc.
Ce n'est plus vrai, j'ai complexifié un peu l'algo à cet endroit afin d'implémenter le belge.
On peut parfois faire plus joli, mais parfois il faut savoir faire simple pour économiser la vitesse... exemple :
if (stx.equals(BE))
mot = mot.replaceFirst(tabdix[6], "octante");

Concernant le parse à répétition, c'est pour ne pas me noyer dans les variable, mais tu as raison niveau performances c'est nul. :)

Pour ta solution
retour = retour + " " + tabdix[((int)convertedNumber/10) - 2] + et ;
c'est très judicieux, mais je suis de nature frileuse et les convertions implicites de décimal à entier me font peur... à tester pour le mettre à l'épreuve.

Commentaire de petifa le 01/10/2008 18:10:02

Pour le tableau de dizaine j'avais compris pourquoi ne pas mettre soixante-dix et mettre deux fois soixante, mais c'est juste que ca m'est pas venu naturellement, mais ca ne complexifie pas trop l'algo, juste que tu dois prendre en plus des cas.

Sinon pour les parse cela allège les calculs, et l'utilisation de variables est très utile dans ce cas.
La solution que j'ai mise est à tester, mais logiquement elle devrait tenir le choc :p vu que ca cast en int alors on ne garde que le nombre des dizaines... A voir

Commentaire de yvkoe le 06/10/2008 21:36:52 9/10

Bonjour, juste pour te dire que c'est en suisse qu'on dit octante pas en Belgique(je suis belge) sinon rien à dire à part ce qui a déjà été dit plus haut mais tes réponses sont bonnes aussi: c'est vrai parfois il vaut mieux faire plus long et bien suivre son algo

Commentaire de xael2 le 07/10/2008 18:31:05

D'accord YVKOE, merci pour ce commentaire. Je tâcherai de rectifier le tir dans une prochaine version. Je m'excuse donc auprès des internautes belges, nous auront donc bientôt une version tri-lingue français, suisse et belge...
Pouvez vous me confirmer qu'à part le 'octante' qui doit être 'quatre-vingt' en belge, le reste va bien merci :)

Commentaire de gillardg le 24/10/2008 12:45:30

Salut ,
en Belgique
  septante=70
  quatre-vingt=80
  nonante=90
une fois !

octante ça est suisse peut-être !

Commentaire de yvkoe le 24/10/2008 17:28:45

bonjour eh oui octante c'est suisse

Commentaire de gillardg le 24/10/2008 17:39:04


demi tour (en voiture)belge = retourne-char suisse

Commentaire de leabouch le 07/03/2009 03:58:09

Allo,
      
      Ne pas oublier dans ta nouvelle version que le
chiffre 91 s'écrit : quatre-vingt-onze.  Il n'y a
qu'à ajouter un tiret devant onze dans tabnb[].

Commentaire de IceCactus le 21/01/2012 19:19:13

Bonjour,

Sur le 80...
En Suisse et en Belgique cela tourne de plus en plus vers le quatre-vingt.
Le octante était utilisé en Belgique mais semble s'être perdu, au point que beaucoup de belges l'ont oublié. Mon père avait appris à compter avec octante à Bruxelles et l'utilise encore ( moi aussi )...
Le octante est encore un peu usité en Suisse romande.
Le huitante est parfois utilisé en Suisse, mais surtout sur le canton de Vaud.
Septante et nonante sont courants en Suisse.

J'ai des échos que septante, octante et nonante était utilisés en France il y a longtemps, surtout dans le midi. C'est encore la version conseillée dans le dictionnaire de l'Académie et aussi la plus logique.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Reconnaissance de formes avec algo de Freeman [ par Bandit_world ] Bonjours à tous.J'écris ce message pour savoir si quelqu'un aurait par hasard déjà eu à réaliser un code pour une reconnaissance de formes.J'ai une im Algo MiniMax [ par gmi19oj19 ] Bonjour,Je suis en train de developpé un puissance 4 (je vais commencé pour etre exact ;)).Mon but est de disposer d'un mode un joueur et d'un mode de affichage d'une image! [ par copin ] Salut! Je suis entrain de r&#233;aliser un jeu de blackjack en java! Et g un petit probl&#232;me concernant l'affichage des cartes! Donc avant de fair DESSINER GRAPHES DE POINTS à partir d'algo de fourmis [ par rumss ] salut!je souhaiterais representer des graphes compos&#233;s de sommets et d'arete cependant je ne sais pas encore comment g&#233;rer la modularit&#233 algo d'ajout pour une table (à l'aide d'arbre) de manière itéative [ par yanok06 ] tout est dis dans le tittre. Si quelqu'un peut me proposer un algo cela serait super cool ! Algo : Trouver la coquille ! Solveur sudoku par backtracking [ par sanaria ] Bonjour &#224; tous, Je me suis mis a Java il y a peu, et je me suis lanc&#233; dans un exercice qui devient des plus classique, creer un petit Sudok Trouver l'erreur : Algo Solveur Sudoku par backtracking [ par sanaria ] Bonjour &#224; tous, Je me suis mis a Java il y a peu, et je me suis lanc&#233; dans un exercice qui devient des plus classique, creer un petit Sudok recherche algo dijkstra [ par samplaid ] Bonsoir, Je dois faire un projet réseau où je dois insérer l'algo de dijkstra mais j'ai pas trouvé de code qui me plaise. Est-ce que qqn à un code fa image [ par cha7ri ] je veux savoir les algo de compression d'image ....surtout RLE    ,   ZLW ,hauffman,etc....svp je veux un algo structuré et pas de texte merci d'avanc Algo chaud/froid ? [ par lrequena ] Pour simplifier le plus possible... Voici comment je résume mon probleme :Je suis sur un terrain de dimension W*H dont je possède la carte.Je dois che


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,295 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales