Bonjour/Bonsoir ! Voilà j'ai des soucis avec mon code c++ qui me crée parfaitement mes 27 chiffres sans aucun soucis. Le but de ce projet est de créer une nombre de cartes de loto(Suisse) et de les mettre dans ma base de donnée (mysql) puis de récupérer un certain nombres de cartes et de les afficher pour pouvoir jouer.
Voilà mon code de génération de carte :
J'ai remarqué que c'est au moment ou je veux enlever mes 12 chiffres et mettre 12 zéros à la place qu'il me plante et qu'il me fait une ligne comme ceci dans ma base de donnée :
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 void TMain::generateCarte() { //Déclaration de variables int i = 0; int j = 0; bool Existence; bool Existencerand ; int ValTempTableau = 0; // Cette partie de code me permet de créer 27 chiffres qui ne sont pas // semblables et qui seront par la suite trié. for (i = 0; i <= 26; i++) { TabCarte[i].Value = 0; } for (i = 0; i <= 8; i++) { for (j = 0; j <= 2; j++) { do { int ValTempTableau = Random(9) + (i * 10); Existence = NbreExistant(ValTempTableau); if (Existence == false) { TabCarte[j*9 + i].Value = ValTempTableau; } }while(Existence == true); } } // J'appelle ma fonction de triage bubblesort TriageBubbleSort(); // Cette partie de code me permet de supprimer 12 de mes 27 chiffres pour avoir mes //15 chiffres nécessaire à une carte de loto for (i = 0; i <= 11; i++) { int ValTempTableau = Random(26)+1; do { ValTempTableau = Random(26)+1; Existencerand = NbreRetiré(ValTempTableau); if (Existencerand == false ) { TabRand[i].Value = ValTempTableau; TabCarte[ValTempTableau].Value = 0; } }while(Existencerand == true); } }
2,0,0,6,0,12,0,20,0,24,32,0,36,42,47,0,54,0,0,61,0,0,74,0,78,80,83,
pourquoi le 6 est à la quatrième place ?
voilà ce que font mes autres fonctions :
Je me doute bien qu'il y a pleins d'autres méthodes et n'hésitez pas à me dire ce qu'il faudrait que je change... en tout cas merci d'avoir lu ce message et si vous pouviez m'apporter de l'aide j'en serai très reconnaissant. Je vais continuer de chercher de mon côté aussi .
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 //=========================================================================== UnicodeString TMain::InsertionMultiples() { //Déclaration de variables int i; int j; UnicodeString ChaineString = ""; for (i = 0; i <= 26; i++) { ChaineString += UnicodeString(TabCarte[i].Value)+"," ; } return ChaineString; } //=========================================================================== //=========================================================================== void TMain::TriageBubbleSort() { //Déclaration de variables int idx ; bool permute ; int tmp ; do { permute = false ; for (idx = 0; idx < 27; idx++) { if (TabCarte[idx+1].Value < TabCarte[idx].Value ) { tmp = TabCarte[idx].Value ; TabCarte[idx].Value = TabCarte[idx+1].Value ; TabCarte[idx+1].Value = tmp ; permute = true ; } } } while(permute == true ); } //=========================================================================== //=========================================================================== bool TMain::NbreRetiré(int RandSorti) { //Déclaration de variables int i; int j; AnsiString Active; /* for (i = 0; i <= 8; i++) { for (j = 0; j <= 2; j++) { if (RandSorti == TabRand[j*9 + i].Value || RandSorti == 0 || RandSorti == 3 || RandSorti == 7 || RandSorti == 10 || RandSorti == 13 || RandSorti == 16 || RandSorti == 19 || RandSorti == 22 || RandSorti == 25 ) { return true; } } } return false; */ for (i = 0; i <= 26; i++) { if (RandSorti == TabRand[i].Value || RandSorti == 0 || RandSorti == 3 || RandSorti == 7 || RandSorti == 10 || RandSorti == 13 || RandSorti == 16 || RandSorti == 19 || RandSorti == 22 || RandSorti == 25 ) { return true; } } return false; } //=========================================================================== //=========================================================================== bool TMain::NbreExistant(int NoSorti) { //Déclaration de variables int i; int j; for (i = 0; i <= 8; i++) { for (j = 0; j <= 2; j++) { if (NoSorti == TabCarte[j*9 + i].Value) { return true; } } } return false; } //=========================================================================== void __fastcall TMain::btngenererClick(TObject *Sender) { int i ; int NbreCarte = 0; switch (rgNbre->ItemIndex) { default: NbreCarte = 1; break; case 0 : NbreCarte = 15; break; case 1 : NbreCarte = 20; break; case 2 : NbreCarte = 30; break; case 3 : NbreCarte = 100; break; case 4 : NbreCarte = 200; break; case 5 : NbreCarte = 400; break; case 6 : NbreCarte = 800; break; case 7 : NbreCarte = 1000; break; break; } for (i = 0; i <= NbreCarte; i++) { generateCarte(); AnsiString requete = "Insert into tblCarte (carteString) VALUES ('"+ InsertionMultiples() + "');"; Main2->adocommand->CommandText = requete; Main2->adocommand->Execute(); } }
Si besoin je peux fournir tout le code avec la base de donnée complète au pire des cas ...
Voilà mon point h en plus
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 //--------------------------------------------------------------------------- #ifndef SelectiondumodedejeuH #define SelectiondumodedejeuH //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> #include <Grids.hpp> #include <DB.hpp> #include <DBTables.hpp> #include <Buttons.hpp> // Définition d'un type structure pour contenir des resultats d'examen // avec trois membres: eleve, note et remarque struct LotoTirage { int Value ; bool Active; int NoSorti; }; //--------------------------------------------------------------------------- class TMain : public TForm { __published: // Composants gérés par l'EDI TCheckBox *CheckBox1; TCheckBox *CheckBox2; TCheckBox *CheckBox3; TLabel *Label1; TRadioGroup *rgNbre; TStaticText *StaticText1; TBitBtn *btngenerer; TBitBtn *btnlancerpartie; TStaticText *StaticText2; TStaticText *StaticText3; TStaticText *StaticText4; TStaticText *StaticText5; void __fastcall btnlancerpartieClick(TObject *Sender); void __fastcall btngenererClick(TObject *Sender); private: // Déclarations utilisateur public: // Déclarations utilisateur __fastcall TMain(TComponent* Owner); bool NbreExistant(int NoSorti); bool NbreRetiré(int RandSorti); void TriageBubbleSort(); UnicodeString InsertionMultiples(); void generateCarte(); struct LotoTirage TabCarte[27]; struct LotoTirage TabRand[27]; // struct LotoTirage TabCarte[9][3]; struct LotoTirage Tabtemp[9][3]; TButton *MonBtn[27]; }; //--------------------------------------------------------------------------- extern PACKAGE TMain *Main; //--------------------------------------------------------------------------- #endif
Partager