Quand je compile il m'affiche juste ce qui est dans ma fonction provc apres ce qui est dans le main() n'est pas afficher si vous avez idée SVP. en plus c'est pour afficher des nombre compris en 0--Nb-2 sauf le voleur donner dans le main() puisqu'il Nb elmts donc si je commence par 0 c'est jusqu'à Nb-1 sauf voleur generer et en un exemplaire.

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
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
 
int fonct(int *tab, int r, int Nb,int c)
{
  int index=0;
  int i=0;
  int Nbo=0;
  if((r==0) && (tab[0]==0))
    index=0;
 
  else
 
    while((Nbo<=r) && (i<Nb))
 
 { 
   if(tab[i]==0)
     Nbo++;
   i++;
   if(c==(Nb-1)) 
     { 
       if(tab[c]==0) index=c;
       else break;
     }
   index=i-1;
 }
 
  return index;
}
int *provc(int Nb,int voleur)	 
{
  int *ta,r,c,vic,*d;
  ta=(int*)calloc(Nb,sizeof(int));
  d=(int*)calloc((Nb-1),sizeof(int));
  ta[voleur]=1;
  r=rand()%(Nb-1);
  c=0;
  do{
        vic=fonct(ta,r,Nb,c);
	if((ta[vic]==0) && (vic!=voleur)) 
	  {
	    ta[vic]=1;
	d[c]=vic;
	printf("d[%d]=%d\n", c,d[c]);
	c=c+1;
	if((Nb-c)!=0)
	  r=rand()%(Nb-c);
	  }
 
	else
	{
	  while(c<Nb) 
	    { if(ta[c]==0)
	      d[c]=1;
	    d[Nb-1]=c; 
	    break;
	    }
	}
  } 
  while(c<=(Nb-1));
  printf("\n");
  for(c=0;c<=(Nb-1);c++) printf("d[%d]=%d\n", c,d[c]);
  return d;
}
int main(int argc, char *argv[])
{
  int Nb,i,voleur;
  int *vole;
  srand(time(NULL));
  Nb=atoi(argv[1]);
  vole=(int*)calloc((Nb-1),sizeof(int));
  voleur=rand()%Nb;
  printf("voleur=%d\n",voleur);
  i=0;
  vole=provc(Nb,voleur);
  for(i=0;i<(Nb-1);i++)
    printf("volé=%d\n", vole[i]);
  return 0;
 
}