Convertir un nombre en lettres

Signaler
Messages postés
7
Date d'inscription
vendredi 1 avril 2005
Statut
Membre
Dernière intervention
18 avril 2005
-
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
-
Convertir un nombre en lettres


Public Function MontantEnLettre(Montant) As String
' Walter Stucki Network Computing International, AT&T, Sperry Univac
' http://mypage.bluewin.ch/w.stucki/Programmes.htm
' Objectif: convertir des montants en lettre selon les règles orthographiques en vigueur
' en Suisse romande. Par exemple pour un chèque bancaire
' Version valable pour un maximum de 999'999'999.99
Dim varnum, varnumD, varnumU, varlet, résultat
'varnum : pour stocker les parties du nombre que l'on va découper
'varlet : pour stocker la conversion en lettres d'une partie du nombre
'varnumD: pour stocker la partie dizaine d'un nombre à 2 chiffres
'varnumU: pour stocker la partie unité d'un nombre à 2 chiffres
'résultat: pour stocker les résultats intermédiaires des différentes étapes
Static chiffre(1 To 19) '*** tableau contenant le nom des 19 premiers
'nombres en lettres
chiffre(1) = "un"
chiffre(2) = "deux"
chiffre(3) = "trois"
chiffre(4) = "quatre"
chiffre(5) = "cinq"
chiffre(6) = "six"
chiffre(7) = "sept"
chiffre(8) = "huit"
chiffre(9) = "neuf"
chiffre(10) = "dix"
chiffre(11) = "onze"
chiffre(12) = "douze"
chiffre(13) = "treize"
chiffre(14) = "quatorze"
chiffre(15) = "quinze"
chiffre(16) = "seize"
chiffre(17) = "dix-sept"
chiffre(18) = "dix-huit"
chiffre(19) = "dix-neuf"
Static dizaine(1 To 9) '*** tableau contenant les noms des dizaines
dizaine(1) = "dix"
dizaine(2) = "vingt"
dizaine(3) = "trente"
dizaine(4) = "quarante"
dizaine(5) = "cinquante"
dizaine(6) = "soixante"
dizaine(7) = "septante"
dizaine(8) = "huitante"
dizaine(9) = "nonante"
'*** Traitement du cas zéro
If Montant >= 1 Then
résultat = ""
Else
résultat = "zéro"
GoTo FinTraitement
End If
'*** Traitement des millions
varnum = Int(Montant / 1000000)
If varnum > 0 Then
GoSub CentaineDizaine
résultat = varlet + " million"
If varlet <> "un" Then résultat = résultat + "s"
End If
'*** Traitement des milliers
varnum = Int(Montant) Mod 1000000
varnum = Int(varnum / 1000)
If varnum > 0 Then
GoSub CentaineDizaine
If varlet <> "un" Then
résultat = résultat + " " + varlet
résultat = résultat & " mille"
Else
résultat = "mille"
End If
End If
'*** Traitement des centaines et dizaines
varnum = Int(Montant) Mod 1000
If varnum > 0 Then
GoSub CentaineDizaine
résultat = résultat + " " + varlet
End If
résultat = LTrim(résultat)
varlet = Right$(résultat, 4)
'*** Traitement du "s" final pour mille, cent et du "de" pour million
Select Case varlet
Case "ille"
résultat = résultat + "s"
Case "cent"
résultat = résultat + "s"
Case "lion", "ions"
résultat = résultat + " de"
End Select

FinTraitement:
'*** Indication du terme Franc
résultat = résultat + " Franc"If Montant >2 Then résultat résultat + "s"
'*** Traitement des centimes
varnum = Int((Montant - Int(Montant)) * 100 + 0.5) '*** On additionne 0,5 afin de compenser
'*** les erreurs de calcul dues aux arrondis
If varnum > 0 Then
GoSub CentaineDizaine
résultat = résultat + " et " + varlet + " centime"
If varnum > 1 Then résultat = résultat + "s"
End If
'*** Conversion 1ère lettre en majuscule
résultat = UCase(Left(résultat, 1)) + Right(résultat, Len(résultat) - 1)
'*** Renvoie du résultat de la fonction et fin de la fonction
MontantEnLettre = résultat
Exit Function
CentaineDizaine:
varlet = ""
'*** Traitement des centaines
If varnum >= 100 Then
varlet = chiffre(Int(varnum / 100))
varnum = varnum Mod 100
If varlet = "un" Then
varlet = "cent "
Else
varlet = varlet + " cent "
End If
End If
'*** Traitement des dizaines
If varnum <= 19 Then '*** Cas où la dizaine est <20
If varnum > 0 Then
varlet = varlet + chiffre(varnum)
End If
Else
varnumD = Int(varnum / 10) '*** chiffre des dizaines
varnumU = varnum Mod 10 '*** chiffre des unités
'*** génération des dizaines en lettres
varlet = varlet + dizaine(varnumD)
'*** traitement du séparateur des dizaines et unités
If varnumU = 1 Then
varlet = varlet + " et "
Else
If varnumU <> 0 Then
varlet = varlet + "-"
End If
End If
End If
'*** génération des unités
If varnumU <> 0 Then
varlet = varlet + chiffre(varnumU)
End If
'*** Suppression des espaces à gauche et retour
varlet = RTrim(varlet)
Return
End Function
la question est comment s'ecrit ce programme en language C?
eske kelk1 peut m'aider svp

3 réponses

Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Je crois que t'as peu de chance que qq'un fasse le boulot à ta place.

YOYO, @+.
YOYO
Messages postés
22
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
24 avril 2005

a le drole tu veux pas l'exec avec
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Voila je l'ai fait !
Je te vend les sources ;)
@ la tienne :p


void Aurevoir( void ); //Bonne journée