Comment programmer

didier -  
PhP Messages postés 1774 Statut Membre -
Nous avons un problème, comment faire un programme turbopascal qui puisse convertir un nombre en son expression litterale.
Le nombre est inférieur à un million; on suppose que le nombre 70 et 90 sont ecris réspectivement septante et nonante.
NB: les nombres à convertir sont des entiers et 80 s'ecrit en un mot.
Nous demandons votre asssistance ou des indices pour accomplir notre programme.

3 réponses

  1. la_batince12
     
    j'avais fait un prog de ce genre la y'a longtemps
    alors tu fait ta saisie
    alors si tu ne gére pas les cents
    tu écris le chiffre de droite (un si 1, deux si 2) (ou onze si il y a un 1 devant) et ainsi de suite
    c'est chiant et long.
    si tu veut la source mail-moi je te len enverait (mais pas envant lundi)
    0
  2. PhP Messages postés 1774 Statut Membre 606
     
    Bjr Didier,

    Voici un truc auquel j'avais réfléchi il y a quelques temps ...

    Voici les règles que j'utiliserais :

    Cas particulièrs

    0 : zéro
    1 : un
    2 : deux
    3 : trois
    4 : quatre
    5 : cinq
    6 : six
    7 : sept
    8 : huit
    9 : neuf
    10 : dix
    11 : onze
    12 : douze
    13 : treize
    14 : quatorze
    15 : quinze
    16 : seize

    20 : vingt

    30 : trente

    40 : quarante

    50 : cinquante

    60 : soixante

    100 : cent

    1000 : mille

    Lorsque le nombre ne correspond pas exactement à un cas particulier appliquer les règles suivantes :

    Nombres à 2 chiffres :

    1n : [10] [n]

    21 : [20] et [n]
    2n : [20] [n]

    31 : [30] et [n]
    3n : [30] [n]

    41 : [40] et [n]
    4n : [40] [n]

    51 : [50] et [n]
    5n : [50] [n]

    61 : [60] et [n]
    6n : [60] [n]

    70 : [60] [10]
    71 : [60] et [11]
    7n : [60] [n+10]

    80 : [4]-[20]
    8[n] : [4]-[20][n]

    9n : [4]-[20][n+10]

    Nombres à 3 chiffres :

    1xx: [100][traitement de xxx comme un nombre inférieur à 100]

    nxx : [n][100][traitement de yyy comme un nombre inférieur à 100][1000][traitement de xxx comme un nombre inférieur à 100]

    Nombres à 4 chiffres et plus :

    1xxx: [1000][traitement de xxx comme un nombre inférieur à 100]

    yyy xxx : [traitement de yyy comme un nombre inférieur à 100][1000][traitement de xxx comme un nombre inférieur à 100]

    etc ...

    L'application des règles :

    R10(xx)

    Si cas particulier retourne directement
    Appliques les règles des nombres à 2 chiffres

    R100(xxx)

    Sicas particulier retourne [xxx]
    Si 0xx : R10(xx)
    Si 1xx : [100]+R10(xx)
    Si nxx : [n][100]+R10(xx)

    R1000(yyyxxx)

    Si cas particulier retourne [xxx]
    Si 0xxx : R100(xx)
    Si 1xxx : [1000]R100(xx)
    Si yyyxxx : R100(yyy)[1000]R100(xxx)

    Par ex

    085150 doit retourner la chaîne : "[4]-[20][5][1000][100][50]"

    978005 doit retourner la chaîne : "[9][100][60][10][8][1000][5]"

    Reste ensuite à remplacer les valeurs entres crochets par le texte ...

    Bon ben y'a plus qu'à implémenter tout çà en Pascal ;:-)

    Et à faire les adaptations pour septante et nonante que j'emploie jamais !
    Gaffe aussi aux traits d'union je sais jamais où il faut en mettre ...

    @+
    Philippe

    [[  The Truth is Out There   ]]
    0