Bonjour,
Le but de mon programme est de traduire les nombres en lettres vers des chiffres, par exemple : DOUZE=12.
Pourriez-vous m'aidez à créer un code ?
Merci.
Bonjour,
Le but de mon programme est de traduire les nombres en lettres vers des chiffres, par exemple : DOUZE=12.
Pourriez-vous m'aidez à créer un code ?
Merci.
Bonjour,
Ce n'est pas trivial : il va falloir commencer par entrer toutes les mots existants dans le dictionnaire français et qui sont utilisés pour décrire les nombres : « un », « deux », « trois », « quatre », « cinq », « six », « sept », « huit », « neuf », « dix », « onze », « douze », « treize », « quatorze », « quinze » et « seize », puis « vingt », « trente », « quarante »… puis encore « cent », « mille », « million » et « milliard », puis enfin « virgule », éventuellement.
Ensuite, il va falloir définir la grammaire utilisée pour décrire ces nombres (la même que celle qu'on nous enseigne à l'école) et seulement enfin, il va transcrire cette grammaire en un algorithme, puis une implémentation en langage C, laquelle va essentiellement consister à ajouter itérativement une valeur prédéfinie à un accumulateur, en fonction du lexon traité et du contexte.
Sachant qu'en français standard et sans fautes, les nombres sont transcrits par blocs de trois chiffres, eux même divisés en centaines et unités.
ainsi, 1387155 se décompose en {1, 3-87, 1-55}.
Il se transcrit par "{1} million(s) {3-87} mille {1-55}"
un bloc de 3 se transcrit par:
s'il y a des centaines, "chiffre des centaines" "cent avec un s s'il chiffre>1 et pas d'unités"
s'il y a des unités, forme littérale d'un nombre entre 1 et 99
Ainsi, tu as trois sous parties à produire:
- la lecture de la forme littérale d'un nombre entre 1 et 99,
- la lecture d'un nombre de centaines,
- la lecture d'un multiple de 1000
Je te suggère à lire le nombre sous la forme d'une liste de mots, et de commencer par le bout (les unités).
Ainsi, tu pourras analyser un mot directement à partir de ce que tu as déjà lu, plutot que ce qui est encore à venir.
Ainsi, deux cent douze mille six cent cinquante-trois deviendrait {trois, cinquante, cent, six, mille, douze, cent, deux}.
Ce que tu peux traduire rapidement par (3 + 50 + 100*6) + 1000 (12 + 100*2).
PS: je parlais de français standard, parce qu'on rencontre facilement des "quinze cent quinze", avec le millier intégré dans les centaines
Une discussion potentiellement utile, traitant du problème inverse : http://www.developpez.net/forums/d13...ffres-lettres/
Partager