j'ai ecrit un programme pour m'afficher des nombre aléatoire de 0 à Nb-1 sans double une meme valeur deja affiche .mais sur 2 execution j'ai une bonne reponse à une il me double une valeur est ce que quel voit ou je me suis trompé.
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
 
#include<>
#
int fonct(int *tab, int p, int Nb,int s)
{ int index,i,Nbo;
  Nbo=0; i=0;
  while((Nbo<=p) && (i<Nb)) {
  if(tab[i]==0) Nbo=Nbo+1;
  i=i+1;
  if(s==(Nb-1)) 
   index=i-1;
}
printf("index=%d\n",index);
return index;
}
int main(int argc, char *argv[])
{ 
int *ta;
int i,r,vic,s,Nb;
srand( time(NULL));
Nb=atoi(argv[1]);
ta=(int*)calloc(Nb, sizeof(int));
r=rand()%Nb; printf("premiere vic=%d\n",r);
ta[r]=1;
s=0;
r=rand()%(Nb-1);
printf("le r est :%d\n",r);
while(s!=(Nb-1))
{
        vic=fonct(ta,r,Nb,s);
         if(vic==Nb) ta[vic-1]=1; 
          else
           ta[vic]=1;
     for(i=0;i<Nb;i++)
     printf("ta[%d]=%d\n",i,ta[i]);
     s=s+1;
     printf("%d\n",s);
     r=rand()%(Nb-s);
     printf("le r de la boucle est:%d\n",r);
 }
return 0; 
}