Comment programmer

Fermé
didier - 14 déc. 2001 à 11:48
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 - 4 avril 2002 à 17:06
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.
A voir également:

3 réponses

comment programer une symetrie
0
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
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
4 avril 2002 à 17:06
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