bonjour je debute dans le C, et je sollicite votre aide car je n'arrive pas a resoudre un probleme depuis quelques temps.
Lorsque je compile le programe suivant ca marche mais quand je l'execute il me retourne un segmentation fault
Et ceci m'arrive seulement quand je rajoute la fonction tracer_graphique sans celle la le programme marche.
merci d'avance

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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <stdio.h>
#include <TPInfo/hasard.h>          
#include <math.h>
#include <unistd.h>
#include <TPInfo/graphisme.h>
 
void generer_tableau_entiers_aleatoire(int tab[],int nbre_elements,int borne_min,int borne_max)
{
int i;
for (i=0;i<nbre_elements;i++)
   tab[i]=entier_aleatoire(borne_min,borne_max);
}
 
 
void afficher_tableau_entiers(int tab[],int nbre_elements)
{
int i;
for (i=0;i<nbre_elements;i++)
   {printf("%d | ",tab[i]);}                                                  /*ajout des crochets pour mettre l'instruction revenir a la ligne ensuite*/
printf("\n");
}
 
 
void minimum_tableau_entiers(int tab[],int nbre_elements)
{
int i,min=tab[0];
for (i=0;i<nbre_elements;i++)
   if (min>tab[i])
     min=tab[i];
printf("minimum du tableau = %d\n",min);
}
 
 
void maximum_tableau_entiers(int tab[],int nbre_elements)
{
int i,max=tab[0];
for (i=0;i<nbre_elements;i++)
   if (max<tab[i])
     max=tab[i];
printf("maximum du tableau = %d\n",max);
}
 
 
void echanger(int *a,int *b)
{
int c;
c=*a;
*a=*b;
*b=c;
}
 
 
void trier_tableau_entiers(int tab[],int nbre_elements)
{
int i,j;
for (j=0;j<nbre_elements;j++)
  for (i=0;i<nbre_elements-1;i++)
  {
  if (tab[i]>tab[i+1])
    echanger(&tab[i],&tab[i+1]);
  }
}
 
 
void tracer_graphique(int borne_max,int nbre_elements,int tab[],int borne_min)
{
 int i;
 double xmin=0, xmax=nbre_elements;
 double ymin=borne_min, ymax=borne_max;
 int vert;
 vert=makecol(0,255,0);
 for(i=0;i<nbre_elements;i++)
   tracer_point(i,tab[i],vert,xmin,xmax,ymin,ymax);
}
 
 
int main(void)
{
int i,nbre_elements,borne_min,borne_max,tab[i];
int hauteur,largeur;
hauteur=400;
largeur=500;
printf("nbre elements???\n");
scanf("%d",&nbre_elements);
printf("borne min???\n");
scanf("%d",&borne_min);
printf("borne max???\n");
scanf("%d",&borne_max);
generer_tableau_entiers_aleatoire(tab,nbre_elements,borne_min,borne_max);
afficher_tableau_entiers(tab,nbre_elements);
ouvrir_fenetre_graphique(largeur,hauteur);
tracer_graphique(borne_max,nbre_elements,tab,borne_min);
sleep(10);
trier_tableau_entiers(tab,nbre_elements);
printf("nouveau tableau\n");
afficher_tableau_entiers(tab,nbre_elements);
minimum_tableau_entiers(tab,nbre_elements);
maximum_tableau_entiers(tab,nbre_elements);
fermer_fenetre_graphique();
return 0;
}
 
END_OF_MAIN();