Conversion d'un nombre en chaine de caractère

Fermé
tenohthree Messages postés 50 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 1 janvier 2010 - 1 nov. 2009 à 17:00
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 6 nov. 2009 à 16:12
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.
A voir également:

4 réponses

Dynamix Messages postés 202 Date d'inscription dimanche 22 mars 2009 Statut Membre Dernière intervention 30 avril 2011 76
1 nov. 2009 à 17:14
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".
1
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
1 nov. 2009 à 17:20
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.
1
tenohthree Messages postés 50 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 1 janvier 2010
1 nov. 2009 à 17:01
je vous informe que le programmation est en C
0
tenohthree Messages postés 50 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 1 janvier 2010
3 nov. 2009 à 21:42
on peut pas utiliser switch pour un chaine de caractère il n'accepte que 2 caractères au maximum
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
3 nov. 2009 à 21:44
ce n'est pas le problème. tu pourras utiliser des if...else imbriqués et/ou à la suite.
0
tenohthree Messages postés 50 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 1 janvier 2010 > Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013
5 nov. 2009 à 17:03
ça devient plus compliqué
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660 > tenohthree Messages postés 50 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 1 janvier 2010
6 nov. 2009 à 16:12
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.
0