Bonsoir,
J'ai un problème assez spécial à vous exposer. Je me casse la tête dessus depuis 2h et pas moyen de trouver le bug. Voilà, j'utilise donc la fonction rand qui me permet de générer des nombres aléatoires (dans ce cas ci un vecteur de lettre A à F). Pour qu'une lettre ne soit pas présente 2 fois dans mon vecteur, je fais une série de while, je compte évidemment optimiser ça par la suite, mais c'est pour avoir une base. Hors, je me rends compte que des fois, ça pose problème... Le code :
____________________________________________________
char v[6]={'A','B','C','D','E','F'};
char i;
system ("CLS");
srand ((unsigned)time(NULL));
for (i=0;i<4;i++)
{
v[i]=v[rand() % 6];
}
while ((v[0]==v[1])||(v[0]==v[2])||(v[0]==v[3]))
{
printf ("%c%c%c%c",v[0],v[1],v[2],v[3]);
printf ("\ndebut boucle 0");
v[0]=v[rand()%6];
printf ("\nfin boucle 0");
}
while ((v[0]==v[1])||(v[2]==v[1])||(v[3]==v[1]))
{
printf ("%c%c%c%c",v[0],v[1],v[2],v[3]);
printf ("\ndebut boucle 1");
v[1]=v[rand()%6];
printf ("\nfin boucle 1");
}
while ((v[2]==v[0])||(v[2]==v[1])||(v[2]==v[3]))
{
printf ("%c%c%c%c",v[0],v[1],v[2],v[3]);
printf ("\ndebut boucle 2");
v[2]=v[rand()%6];
printf ("\nfin boucle 2");
}
while ((v[3]==v[0])||(v[3]==v[1])||(v[3]==v[2]))
{
printf ("%c%c%c%c",v[0],v[1],v[2],v[3]);
printf ("\ndebut boucle 3");
v[3]=v[rand()%6];
printf ("\nfin boucle 3");
}
printf ("%c%c%c%c",v[0],v[1],v[2],v[3]);
____________________________________________________
Exemple de problème : Il boucle sans fin sur "boucle1" avec les lettres AFEF ou sur la "boucle2" avec les lettres FEED ou sur la boucle 3 avec les lettres BEFF... vu le nombre de fois où il ressort un nombre aléatoire quand il entre dans sa boucle, il ne va quand-même pas trouver 500 fois le même !!!

Merci de m'aider...