Conversion d'un nombre en chaine de caractère

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

4 réponses

  1. 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
    1. 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
      1. je vous informe que le programmation est en C
        0
        1. on peut pas utiliser switch pour un chaine de caractère il n'accepte que 2 caractères au maximum
          0
          1. ce n'est pas le problème. tu pourras utiliser des if...else imbriqués et/ou à la suite.
            0
          2. @Pacorabanixça devient plus compliqué
            0
          3. @tenohthreeen 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