salut;
je veux réaliser une application pour mon petit projet je dois convertir des chiffres en lettres c'est a dire 1 on un, 2 on deux ect.....
voila avec un button un edit et un label
merci de m'aidez
salut;
je veux réaliser une application pour mon petit projet je dois convertir des chiffres en lettres c'est a dire 1 on un, 2 on deux ect.....
voila avec un button un edit et un label
merci de m'aidez
Salut bicha_27
Voici un code
CONVERSION DES CHIFFRES EN LETTRES
l'auteur du code original est gagah1
j'ai un peu retravailler le code il semble fonctionner
Attention le TEdit doit recevoir uniquement des chiffres et ces chiffres doivent etre des entiers
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "SysUtils.hpp" // <----- ne pas oublier //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { /* La valeur de chiffre ne doit pas dépasser la plage de valeur pour unsigned int càd 4 294 967 295 , sinon il y a erreur de conversion !!! */ } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int chiffre; chiffre = StrToInt(Edit1->Text); char lettre[256]; unsigned int centaine, dizaine, unite, reste, y; bool dix = false; reste = chiffre; for(int i=1000000000; i>=1; i/=1000) { y = reste/i; if(y!=0) { centaine = y/100; dizaine = (y - centaine*100)/10; unite = y-(centaine*100)-(dizaine*10); switch(centaine) { case 0: break; case 1: StrCat(lettre,"cent "); break; case 2: if((dizaine == 0)&&(unite == 0)) StrCat(lettre,"deux cents "); else StrCat(lettre,"deux cent "); break; case 3: if((dizaine == 0)&&(unite == 0)) StrCat(lettre,"trois cents "); else StrCat(lettre,"trois cent "); break; case 4: if((dizaine == 0)&&(unite == 0)) StrCat(lettre,"quatre cents "); else StrCat(lettre,"quatre cent "); break; case 5: if((dizaine == 0)&&(unite == 0)) StrCat(lettre,"cinq cents "); else StrCat(lettre,"cinq cent "); break; case 6: if((dizaine == 0)&&(unite == 0)) StrCat(lettre,"six cents "); else StrCat(lettre,"six cent "); break; case 7: if((dizaine == 0)&&(unite == 0)) StrCat(lettre,"sept cents "); else StrCat(lettre,"sept cent "); break; case 8: if((dizaine == 0)&&(unite == 0)) StrCat(lettre,"huit cents "); else StrCat(lettre,"huit cent "); break; case 9: if((dizaine == 0)&&(unite == 0)) StrCat(lettre,"neuf cents "); else StrCat(lettre,"neuf cent "); }// endSwitch(centaine) switch(dizaine) { case 0: break; case 1: dix = true; break; case 2: StrCat(lettre,"vingt "); break; case 3: StrCat(lettre,"trente "); break; case 4: StrCat(lettre,"quarante "); break; case 5: StrCat(lettre,"cinquante "); break; case 6: StrCat(lettre,"soixante "); break; case 7: dix = true; StrCat(lettre,"soixante "); break; case 8: StrCat(lettre,"quatre-vingt "); break; case 9: dix = true; StrCat(lettre,"quatre-vingt "); } // endSwitch(dizaine) switch(unite) { case 0: if(dix) { StrCat(lettre,"dix "); } break; case 1: if(dix) { StrCat(lettre,"onze "); } else { StrCat(lettre,"un "); } break; case 2: if(dix) { StrCat(lettre,"douze "); } else { StrCat(lettre,"deux "); } break; case 3: if(dix) { StrCat(lettre,"treize "); } else { StrCat(lettre,"trois "); } break; case 4: if(dix) { StrCat(lettre,"quatorze "); } else { StrCat(lettre,"quatre "); } break; case 5: if(dix) StrCat(lettre,"quinze "); else StrCat(lettre,"cinq "); break; case 6: if(dix) StrCat(lettre,"seize "); else StrCat(lettre,"six "); break; case 7: if(dix) StrCat(lettre,"dix-sept "); else StrCat(lettre,"sept "); break; case 8: if(dix) StrCat(lettre,"dix-huit "); else StrCat(lettre,"huit "); break; case 9: if(dix) StrCat(lettre,"dix-neuf "); else StrCat(lettre,"neuf "); } // endSwitch(unite) switch (i) { case 1000000000: if(y>1) StrCat(lettre,"milliards "); else StrCat(lettre,"milliard "); break; case 1000000: if(y>1) StrCat(lettre,"millions "); else StrCat(lettre,"million "); break; case 1000: StrCat(lettre,"mille "); } } // end if(y!=0) reste -= y*i; dix = false; } // end for if(strlen(lettre)==0) strcpy(lettre,"zero"); Label1->Caption = lettre; } //---------------------------------------------------------------------------
Un sujet de 2006 : convertir un chiffre en lettre avec builder ?
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
A quelques fautes d'orthographe près:
20 et 100 s'accordent quand ils sont multipliés par un nombre sans être suivis par un autre nombre.
* quatre-vingts
* quatre-vingt-trois
* quatre cents
* quatre cent vingt et unsource : http://leconjugueur.lefigaro.fr/frlesnombres.php81 et 91 sont écrits avec un trait d'union:
* quatre-vingt-un
* quatre-vingt-onze
Le français est une langue formidable, quand même![]()
Salut 10_GOTO_10
Je sais qu'il y a des fautes d'orthographe dans le code, si il n'y a que cela a revoir c'est un moindre mal non?
Comme deux autres post on ete ouvert avec le meme sujet
J'aimerais que bicha_27 nous dit si son probleme est resolu car c'est le seul poste ou il y a des reponses
salut, merci pour votre aide
j'ai tester le code il affiche des signe a coté des lettre
que donne tu comme valeur a convertir, quelle est ta version BCB
je programme avec builder6 , les chiffres sont converti correctement sauf il y a des signe a coté .
J'utilise aussi builder6, le programme ne peut pas convertir de nombres avec des decimales ex: " 1234,56 "
Sinon ce sont des caracteres speciaux qui s'affichent
salut, je converti des nombres entier par exemple je saisie 252 il affiche des caractère spéciaux a coté deux cent cinquante deux comment enlevé ses caractère
Chez moi le code fonctionne
A tu reverifie ligne par ligne que tu n'a pas fait une erreur de recopie.
Quels caracteres supplementaire s'affiche des chiffres, des lettres, des caracteres speciaux
Salut, c'est pas juste une erreur d'initialisation? Au lieu de mettre
Tu devrais utiliser:
Code : Sélectionner tout - Visualiser dans une fenêtre à part char lettre[256];
Car si tu as un buffer de lequel il y a n'importe quoi, c'est normal qu'avec un StrCat qu'il y ait des problèmes. StrCat va ajouter le texte à la première occurrence de '\0'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part char lettre[256] = {};
Salut Crayon
J'ai teste ta proposition elle renvoie une erreur
J'ai essaye ceci qui ne donne pas d'erreurchar lettre[256] = {};
[C++ Error] Unit1.cpp(29): E2264 Expression expected
char lettre[256] = "";
ou
char lettre[256] = "\0";
Merci blondelle, j'avais tester mon code sous C++Builder XE2, j'imagine que c'est différent avec la version 6. Est-ce qu'il y a une raison de ne pas utiliser AnsiString, est que cette classe existait sous C++Builder 6?
Sinon pourquoi on ne programme pas en C++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char* lettre = new char[256]; // ... delete[] lettre;
Un lien sur le site
Ou j'ai trouve ceci, trois possibilite d'ecriture valide
char buffer[256] = {0};
char buffer[256] = {'\0'};
char buffer[256] = "";
merci beaucoup le problème est résolut le code marche correctement merci encore![]()
Bonjour a tous
pour convertir mes nombres je travail sur la fonction NumText pour la langue Fr et sur la fonction NoToTxt pour la langue AR
mais elle converte les chiffre dans une seul ligne
comment le convert le nombre en deux ligne ?
Salut !
Pour afficher le texte sur plusieurs lignes, il suffit d'insérer le caractère '\n'dans la chaîne pour afficher ce qui suit sur une nouvelle ligne.
Exemple avec un tableau de char :
Ce texte s'affichera sur trois lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part char texte[] = "Bonjour !\nComment ça va ?\nA plus !";
Au niveau AnsiString :Bonjour !
Comment ça va ?
A plus !
Attention cependant à utiliser des classes qui savent tenir compte des LF (comme TLabel par exemple)!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 AnsiString LF = "\n"; AnsiString A = "Bonjour !"; AnsiString B = "Comment ça va ?"; AnsiString C = "A plus !"; //... AnsiString R = A + LF + B + LF + C; Label1->Caption = A + LF + B + LF + C;
Testé sur BCB3 Pro !
A plus !
Tu peux aussi bénéficier du WordWrap automatique du TLabel
Il suffit de lui donner sa largeur maximale (Autosize à false évidemment) et cela ira à la seconde ligne pour éviter que cela dépasse
l'API DrawText DT_WORDBREAK le permet aussi voir FAQ : Comment avoir des retours chariot dans une cellule d'un TStringGrid ?
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
Partager