Conversion d'un nombre en chaine de caractère
tenohthree
Messages postés
50
Date d'inscription
Statut
Membre
Dernière intervention
-
Pacorabanix Messages postés 3248 Date d'inscription Statut Membre Dernière intervention -
Pacorabanix Messages postés 3248 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un mini projet intitulé " Conversion d'un nombre écrite en chaine de caractère en un entier (char=>int)
je veut au moins une idée d' écrire un programme qui converti une string de nombre (exemple cinq cent quatre-vingt treize ) en un entier 593...avez vous une idée ou algorithme expliquant le procédé et le démarche de programmation?
merci de répondre.
j'ai un mini projet intitulé " Conversion d'un nombre écrite en chaine de caractère en un entier (char=>int)
je veut au moins une idée d' écrire un programme qui converti une string de nombre (exemple cinq cent quatre-vingt treize ) en un entier 593...avez vous une idée ou algorithme expliquant le procédé et le démarche de programmation?
merci de répondre.
A voir également:
- Convertir chaine de caractere en entier algorithme
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Chaine tnt gratuite sur mobile - Guide
4 réponses
C'est un peu lourd mais tu pourrais par exemple balayer ta chaîne de caractères (à l'aide d'un pointeur) et par l'intermédiaire d'un switch faire un truc du genre "si le caractère = '5' alors le chiffre = 5".
le code en lui-même sera assez gros (comme ça à vue de pif au moins une bonne centaine de lignes ou plus), mais la démarche est relativement simple.
En fait tu cherches à comprendre l'algorithme qui lirait une chaine.
Mais le problème est que vu la langue française il va y avoir plein de cas et de sous-cas.
D'abord, comme fais-tu toi même pour transcrire un nombre ecrit en français en un nombre écrit en chiffres ?
Je te proposes d'essayer toi même (avec une feuille de papier) de trouver des règles générales et l'ordre dans lequel tu dois faire les choses.
Essaye avec :
un
deux
trois
dix
treize
quatorze
quize
dix-sept
dix-huit
dix-neuf
vingt
vingt et un
vingt deux
vingt trois
trente cinq
quarante neuf
soixante
soixante-dix
soixante et onze
soixante treize
soixante dix huit
cent
cent un
cent treize
quatre cent cinquante huit
quatre cent quatre-vingt dix
Tu pourras voir qu'il faut que ton programme aprenne tout d'abord à "repérer" certains "mots ou groupes de mots" comme "quatre-vingt" ou "treize" ou "deux".
Ensuite il doit souvent ignorer des "espaces" ou des "et", ou les tirets "-" mais pas tout le temps (comme dans quatre-vingt")
Perso je ne suis pas en France mais dans un pays où on dit "septante" pour soixante-dix et "nonante" pour quatre-vingt-dix (et même "huitante" ou "octante" pour quatre-vingt) ce qui simplifie ENORMEMENT les choses ^^. Peut-être essaye déjà de faire un algorithme qui ne prend pas en compte cette histoire de "quatre-vingt" ou de "soixante-dix". Ce sera plus clair pour réfléchir.
En fait tu cherches à comprendre l'algorithme qui lirait une chaine.
Mais le problème est que vu la langue française il va y avoir plein de cas et de sous-cas.
D'abord, comme fais-tu toi même pour transcrire un nombre ecrit en français en un nombre écrit en chiffres ?
Je te proposes d'essayer toi même (avec une feuille de papier) de trouver des règles générales et l'ordre dans lequel tu dois faire les choses.
Essaye avec :
un
deux
trois
dix
treize
quatorze
quize
dix-sept
dix-huit
dix-neuf
vingt
vingt et un
vingt deux
vingt trois
trente cinq
quarante neuf
soixante
soixante-dix
soixante et onze
soixante treize
soixante dix huit
cent
cent un
cent treize
quatre cent cinquante huit
quatre cent quatre-vingt dix
Tu pourras voir qu'il faut que ton programme aprenne tout d'abord à "repérer" certains "mots ou groupes de mots" comme "quatre-vingt" ou "treize" ou "deux".
Ensuite il doit souvent ignorer des "espaces" ou des "et", ou les tirets "-" mais pas tout le temps (comme dans quatre-vingt")
Perso je ne suis pas en France mais dans un pays où on dit "septante" pour soixante-dix et "nonante" pour quatre-vingt-dix (et même "huitante" ou "octante" pour quatre-vingt) ce qui simplifie ENORMEMENT les choses ^^. Peut-être essaye déjà de faire un algorithme qui ne prend pas en compte cette histoire de "quatre-vingt" ou de "soixante-dix". Ce sera plus clair pour réfléchir.
on peut pas utiliser switch pour un chaine de caractère il n'accepte que 2 caractères au maximum
en général, décortiquer une phrase (ou une expression) est relativement difficile.
Il est habituel de faire appel à la récursivité dans ce genre de cas :
tu lis la fin (ex: "treize"), tu additionne le résultat (qui est 13) avec ta fonction appliquée sur le reste de la chaine ("mille deux-cent" par exemple). Le deux-cent est évalué en 200, puis on appelle la fonction sur ce qu'il reste, "mille" qui est évalué en 1000.
Résultat : tu ne dois savoir évaluer que les petits mots de fin de phrase exactement, et le reste est repassé dans la machine.
Mais je ne sais pas si tu as vu la récursion ou pas.
Il est habituel de faire appel à la récursivité dans ce genre de cas :
tu lis la fin (ex: "treize"), tu additionne le résultat (qui est 13) avec ta fonction appliquée sur le reste de la chaine ("mille deux-cent" par exemple). Le deux-cent est évalué en 200, puis on appelle la fonction sur ce qu'il reste, "mille" qui est évalué en 1000.
Résultat : tu ne dois savoir évaluer que les petits mots de fin de phrase exactement, et le reste est repassé dans la machine.
Mais je ne sais pas si tu as vu la récursion ou pas.