Ce qui varie entre tes boucles, ce n'est que N non ? Donc :
Code:
1
2
3
4
5
6
7
8 for (int N = 0; N < 10; ++N) { for (const char* c = caracteres; c != caracteres + 36; ++c) { Str[N] = *c; Memo1->Lines->Add(Str); } }
Version imprimable
Ce qui varie entre tes boucles, ce n'est que N non ? Donc :
Code:
1
2
3
4
5
6
7
8 for (int N = 0; N < 10; ++N) { for (const char* c = caracteres; c != caracteres + 36; ++c) { Str[N] = *c; Memo1->Lines->Add(Str); } }
Non le probleme est que là toutes les possibilités ne seront pas faites... Il va me les faire pour le permier caractere il le remettra a zero et feras sa pour le deuxieme et ainsi de suite... Je doit faire toutes les possibilités du caractere 3 de "000", quand j'ai fai toutes les possiblités il doit me changer de caractere numero 2 "010" et recommencer dans le caractere 3 toutes les possibilitées ainsi de suite pour le caractere 3... Je voi pas comment faire toutes les combinaisons possible autrement :lol:
Ok j'avais mal compris, désolé.
Il te faut donc plutôt une fonction récursive :
Pas testé, mais ça devrait être un truc de ce genre.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 const char[] caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; void EssayerCaracteres(AnsiString& Str, unsigned int N) { for (const char* c = caracteres; c != caracteres + 36; ++c) { Str[N] = *c; if (N < Str.Length() - 1) EssayerCaracteres(Str, N + 1); else Memo1->Lines->Add(Str); } } AnsiString Str = "00000"; EssayerCaracteres(Str, 0);
Merci!! c'est exactement ce que je voulais faire! En nettement plus simple de se que j'avais trouver :aie: ... Le char[] ne fonctionne toujours pas je le remplace par char* et je met caractere + 36 dans la boucle for ... sa marche très bien
Merci pour tout a++
Pense à cliquer sur :resolu: si c'est le cas ;)