Salut,
S'il vous plait, quelqu'un peut-il avoir un algo en C/C++ prêt à l'utilisation pour transformer un montant saisi en chiffre en lettre.
Merci d'avance pour la réponse.
Dibak.
Version imprimable
Salut,
S'il vous plait, quelqu'un peut-il avoir un algo en C/C++ prêt à l'utilisation pour transformer un montant saisi en chiffre en lettre.
Merci d'avance pour la réponse.
Dibak.
Bonjout,
Tu peux adapter ce code pour Delphi :
http://www.developpez.net/forums/vie...=nombre+lettre
Cordialement,
Arnaud
salut,
C'est justement ce code que j'ai et que je n'arrive pas à adapter en C/C++ ou tout au moins qui me génère trop d'erreur; en fait c'est de cette fonction NombreEnLettre que me proviens l'erreur de violation d'accès dont je fais état dans l'une de mes questions au forum d'aujourdh'ui et qui reste sans réponse.
J'adapte bien le code mais alors, je n'arrive pas à récupérer l'AnsiString généré par la fonction; pourtant la traduction marche bien c-à-d en débogant, je trouve bien le montant en lettre dans la variable à renvoyer, mais quand je dits return(resultat), et qu'il faille récupérer ce résultat dans un AnsiString, il ya erreur, j'ai beau chercher je n'ai pas trouver, s'il ya quelqu'un qui l'a déja traduit, je serais alors heureux de recevoir sa solution.
Soyez indulgent à mon égard.
Dibak
Voilà un code que j'ai écrit pour remplir des chèques.
Lorsque je l'ai écrit, la monnaie française était le francs. Ce qui explique le nom de certaines variables. J'ai ensuite simplement remplacé le libellé "Francs" par celui d'"Euro".
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114 double montant= StrToFloat(eMontantChiffres->Text); AnsiString asFrancs, asCentimes; francs=int(montant); centimes=int(100*(montant-francs)+0.5); Nombre(francs,chNombre); chNombre[0]=toupper(chNombre[0]); asFrancs=AnsiString(chNombre); Nombre(centimes, chNombre); asCentimes=AnsiString(chNombre); asMontant=asFrancs+" euro"; if(francs>1) asMontant=asMontant+"s"; if(centimes>0) { asMontant=asMontant+AnsiString(" ")+asCentimes + AnsiString(" centime"); if(centimes>1) asMontant =asMontant +"s"; } //--------------------------------------------------------------------------- void TChequeBdFForm::SousNombre(const unsigned int n, char* chaine) { chaine[0]=0; unsigned int centaines=n/100, n1=n%100, dixaines=n1/10, unites=n1%10; if(n==0) return; if(centaines!=0) { if(centaines==1) strcpy(chaine, "cent"); else { strcpy(chaine, TabUnites[centaines-1]); strcat(chaine," cents"); } if(n1==0) return; strcat(chaine," "); } if(unites==0) { strcat(chaine, TabDixaines[dixaines-1]); return; } if(n1<20) // 0 < n1 < 20 { strcat(chaine, TabUnites[n1-1]); return; } if(n1<60) // 19 < n1 < 60 { strcat(chaine, TabDixaines[dixaines-1]); strcat(chaine," "); if(unites==1) strcat(chaine, "et "); strcat(chaine, TabUnites[unites-1]); return; } if(n1<80) // 59 <n1 < 80 { unites=n1-60; strcat(chaine,"soixante "); if(unites==1) strcat(chaine, "et "); strcat(chaine, TabUnites[unites-1]); return; } unites=n1-80; strcat(chaine,"quatre-vingt "); strcat(chaine, TabUnites[unites-1]); return; } //--------------------------------------------------------------------------- void TChequeBdFForm::Nombre(const unsigned int n, char* resultat) { char chaine[200]; resultat[0]=0; if(n==0) { strcpy(resultat, "zéro");return; } unsigned int milliards, millions, mille, n1, n2, reste; milliards=n/1000000000; n1=n%1000000000; millions=n1/1000000; n2=n1%1000000; mille=n2/1000; reste=n2%1000; AnsiString asMilliards="", asMillions="", asMille="", asReste=""; if(milliards!=0) { SousNombre(milliards, chaine); asMilliards=AnsiString(chaine); asMilliards=asMilliards+" milliard"; if(milliards>1) asMilliards=asMilliards+"s"; strcpy(resultat, asMilliards.c_str()); if(n1==0) return; strcat(resultat, " "); } if(millions!=0) { SousNombre(millions, chaine); asMillions=AnsiString(chaine)+" million"; if(millions>1) asMillions=asMillions+"s"; strcat(resultat, asMillions.c_str()); if(n2==0) return; strcat(resultat, " "); } if(mille!=0) { chaine[0]=0; if(mille>1) SousNombre(mille, chaine); asMille=AnsiString(chaine)+" mille"; strcat(resultat, asMille.c_str()); if(reste==0) return; strcat(resultat, " "); } SousNombre(reste, chaine); strcat(resultat, chaine); if((reste%100)==80) strcat(resultat, "s"); return; } //---------------------------------------------------------------------------
Salutation,
ton code marche nikel...
Ya juste deux trois variables a ajouter et les deux tableau a créer!!!
Merci pour ton aide
Cordialement
Walm