Rechercher : dans
Par :

Conversion d'un nombre en chaine de caractère

Dernière réponse le 6 nov 2009 à 16:12:28 tenohthree, le 1 nov 2009 à 17:00:15 
 Signaler ce message aux modérateurs

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.

Configuration: Windows XP
Firefox 3.5.4

Meilleures réponses pour « Conversion d'un nombre en chaine de caractère » dans :
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
VBScript - Les fonctions de chaînes de caractères VoirLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
Javascript - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractère Une chaîne de caractère est, comme son nom l'indique, une suite de caractères. On la représente par la suite de caractères encadrée par des guillemets simples (') ou doubles ("), sachant que les deux types de...

1

tenohthree, le 1 nov 2009 à 17:01:47

Je vous informe que le programmation est en C

Répondre à tenohthree

2

Dynamix, le 1 nov 2009 à 17:14:49

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".

Répondre à Dynamix

3

Pacorabanix, le 1 nov 2009 à 17:20:17

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.

Répondre à Pacorabanix

4

tenohthree, le 3 nov 2009 à 21:42:05

On peut pas utiliser switch pour un chaine de caractère il n'accepte que 2 caractères au maximum

Répondre à tenohthree

5

Pacorabanix, le 3 nov 2009 à 21:44:49

Ce n'est pas le problème. tu pourras utiliser des if...else imbriqués et/ou à la suite.

Répondre à Pacorabanix

6

tenohthree, le 5 nov 2009 à 17:03:16

ça devient plus compliqué

Répondre à tenohthree

7

 Pacorabanix, le 6 nov 2009 à 16:12:28

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.

Répondre à Pacorabanix
Collection CommentÇaMarche.net