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

Programmation d'applications complexes
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

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

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Kwai chang caine a écrit : noir de codes ......
tu as un complexe envers les noirs ?? :lol: :lol:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Mais non, t'a encore rien compris cette fois "noir" c'etait la couleur :lol: :lol:
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message 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
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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 ?
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Disons que ça met le gourdin...
XLC
Répondre