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
|
AnsiString AS; short l;
void XPN( AnsiString S )
{
for ( short i=1; i <= S.Length(); i++)
{
AS[l-S.Length()] = S[i]; // on met dans AS[1], puis [2], ... successivement tous les caractères de S ( edit1->test au 1er appel
if ( S.Length() == 1) Form1->ListBox1->Items->Add(AS); // on a fini => sauver le resultat ( ici mis dans une listebox )
else
{
AnsiString U = "";
for (short j=1; j <= S.Length(); j++) if ( i != j )
U = U + S[j]; // on crée le String restant
XPN(U); // et on continue le process
}
}
}
//-------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ListBox1->Clear(); // lite des résultats
AS = "";
while (AS.Length() < Edit1->Text.Length()) AS = AS + " "; // string de la bonne longueur. Peut importe son contenu
l = AS.Length()+1; // + 1 car AnsiString dans BC++ va de 1 a n et non de 0 à n-1
XPN(Edit1->Text); // edit1 est le string dont on veut les combinaisons
} |
Partager