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

cs_petifa Messages postés 215 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 10 mars 2014 - 1 oct. 2008 à 11:22
IceCactus Messages postés 2 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 21 janvier 2012 - 21 janv. 2012 à 19:19
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/48100-nombre-entier-ou-montant-en-lettres-francais-suisse

IceCactus Messages postés 2 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 21 janvier 2012
21 janv. 2012 à 19:19
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.
leabouch Messages postés 1 Date d'inscription dimanche 28 décembre 2003 Statut Membre Dernière intervention 7 mars 2009
7 mars 2009 à 03:58
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[].
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
24 oct. 2008 à 17:39
demi tour (en voiture)belge = retourne-char suisse
yvkoe Messages postés 32 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 19 janvier 2009
24 oct. 2008 à 17:28
bonjour eh oui octante c'est suisse
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
24 oct. 2008 à 12:45
Salut ,
en Belgique
septante=70
quatre-vingt=80
nonante=90
une fois !

octante ça est suisse peut-être !
xael2 Messages postés 8 Date d'inscription lundi 10 septembre 2007 Statut Membre Dernière intervention 7 octobre 2008
7 oct. 2008 à 18:31
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 :)
yvkoe Messages postés 32 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 19 janvier 2009
6 oct. 2008 à 21:36
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
cs_petifa Messages postés 215 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 10 mars 2014
1 oct. 2008 à 18:10
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
xael2 Messages postés 8 Date d'inscription lundi 10 septembre 2007 Statut Membre Dernière intervention 7 octobre 2008
1 oct. 2008 à 17:42
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.
cs_petifa Messages postés 215 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 10 mars 2014
1 oct. 2008 à 11:22
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
Rejoignez-nous