Page 1 sur 1

Code qui écrit un nombre de 0 à 999999 en littéraire

Publié : mar. 10/juil./2007 22:52
par Ollivier
Bon, si jamais quelqu'un l'a déjà fait pardonnez-moi, marrez-vous plus bas en m'écrivant le ou les liens, ça m'apprendra à ne pas lire le forum.

Code : Tout sélectionner

Macro LittD(x)
  Litt(x + 20)
EndMacro

Macro LittM(x)
  Litt(x + 30)
EndMacro

Declare.s Liter(n.l)
Declare.s BigLiter(n.l)

DataSection
Data.s "", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit" ,"neuf"
Data.s "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept"
Data.s "dix-huit", "dix-neuf"
Data.s "", "", "vingt", "trente", "quarante", "cinquante"
Data.s "soixante", "soixante", "quatre-vingt", "quatre-vingt"
Data.s "cent", "mille"
Data.s "et"
EndDataSection

Dim Litt.s(35)
For i = 0 To 32
  Read Litt(i)
Next

n$ = InputRequester("On te demande", "Donne un chiffre entre 0 et 999999", "")
n = Int(Val(n$) )
MessageRequester(N$, BigLiter(n) + "!")

End

Procedure.s BigLiter(n.l)
  Shared Litt()
  If n > 999
    tA = n % 1000
    If tA = 0
      Result$ = LittM(1)
    Else
      Result$ = LittM(1) + "-" + Liter(tA)
    EndIf
    mll = (n % 1000000) - (tA)
    If mll > 1000
      Result$ = Liter(mll / 1000) + "-" + Result$
    EndIf
  Else
    Result$ = Liter(n)
  EndIf
  ProcedureReturn Result$
EndProcedure

Procedure.s Liter(n.l)
  Shared Litt()
  Result$ = ""

  If n < 0
    Pref$ = "moins "
    n = Abs(n)
  Else
    Pref$ = ""
  EndIf
  If n  = 0
    Result$ = "zéro"
  Else
    d = n % 10
    v = n % 20
    c = ((n % 100) - d) / 10
    e = ((n % 100) - v) / 10
    If (c > 1) And (c < 8) And (d = 1)
      et$ = "et-"
    Else
      et$ = ""
    EndIf
    If ((c = 3) Or (c = 4) ) Or (c = 5)
      A$ = LittD(c)
      B$ = Litt(d)
    Else
      A$ = LittD(e)
      B$ = Litt(v)
    EndIf
    union$ = ""
    If (A$ <> "") And (B$ <> "")
      union$ = "-"
    Else
      union$ = ""
    EndIf
    Result$ = A$ + union$ + et$ + B$
    If n > 99
      ct = ((n % 1000) - (n % 100) ) / 100
      If Result$ = ""
        Suff$ = ""
      Else
        Suff$ = "-" + Result$
      EndIf
      If ct = 1
        Result$ = LittM(0) + Suff$
      Else
        Result$ = Litt(ct) + "-" + LittM(0) + Suff$
      EndIf
    EndIf
  EndIf
  Result$ = Pref$ + Result$
  ProcedureReturn result$
EndProcedure

Publié : mer. 11/juil./2007 6:58
par Backup
je ne crois pas que cela a ete fait !! :D

par contre cela a ete fait pour les chiffres Romain :D

ici :
http://www.purebasic.fr/french/viewtopi ... ght=romain
et la :
http://www.purebasic.fr/french/viewtopi ... ght=romain

Publié : mer. 11/juil./2007 9:04
par Kwai chang caine
@Ollivier

Super ce code pour remplir les cheques ça pourra etre utile 8)

Eh bah dis donc, t'es un super bosseur, tout nouveau dans le forum mais déja noir de codes ...... :wink:

Merci
Continue, c'est super.

Publié : mer. 11/juil./2007 11:13
par Backup
Kwai chang caine a écrit : noir de codes ......
tu as un complexe envers les noirs ?? :lol: :lol:

Publié : mer. 11/juil./2007 13:34
par Kwai chang caine
Mais non, t'a encore rien compris cette fois "noir" c'etait la couleur :lol: :lol:

Publié : mer. 11/juil./2007 17:15
par Ollivier
@Kcc

Je n'écris pas tout ! Je poste aussi des codes que je récup ailleurs en prenant soin de laisser la signature de l'auteur. C'est plus urbain :D

@Dobro

Excellent les liens (et encore ce pro de Flype pour nous inventer une méthode nickel). Je vais y penser aux Field Strings. C'est carrément plus portable pour la fonction parce que mes "datas" craignent un peu à côté. On a des chaînes jusqu'à 64Ko alors pourquoi s'en priver? Merci Dobro

Publié : mer. 11/juil./2007 17:41
par comtois
Ollivier a écrit :On a des chaînes jusqu'à 64Ko alors pourquoi s'en priver?
Depuis la V4 , elles sont illimitées. Si c'est pas du bonheur ça ?

Publié : mer. 11/juil./2007 19:30
par Ollivier
Disons que ça met le gourdin...
XLC