Voila j'ai un soucis sur la ligne du malloc. En effet, j'ai deux fonctions qui supprime un element d'un tableau.Lorsque je lance ces deux fonctions cela me fait une erreur (le pc rame et ne repond plus..). Ce problème se trouve lors de l'appel à la second fonction.
et voici le code des deux fonctions...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void algorithmeTournee(s_livraison** tabLivraisonTotale, s_livraison** tabLivraisonParPlateforme, s_plateforme* tabPlateforme,int *nbLivraisonTotale, int *nbLivraisonParPlateforme, int nbPlateforme, int numPlat){ suppElement(tabLivraisonTotale,(*tabLivraisonParPlateforme+numeroLivraison)->nBon, nbLivraisonTotale); retirerElement(tabLivraisonParPlateforme, numeroLivraison, nbLivraisonParPlateforme);
Merci.
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 void retirerElement(s_livraison **tab, int indice, int *nbLivraison){ int i; int j=0; s_livraison *temp=NULL; printf("debut indice = %d et nbLivraison = %d\n",indice,*nbLivraison); system("pause"); temp = (s_livraison*)malloc ((*nbLivraison-1) * sizeof(s_livraison)); if(temp==NULL) printf("ERREUR \n"); else printf("OK \n"); for(i=0,j=0; i<(*nbLivraison) && j<(*nbLivraison); i++,j++){ //element different de celui à supprimer if (i != indice){ //recopie de lelement a garder *(temp+i)=*(*tab+j); }else{ j=j+1; if(j<(*nbLivraison))*(temp+i)=*(*tab+j); } } //Free du tableau free(*tab); *tab=temp; // Taille = taille -1 *nbLivraison = *nbLivraison - 1; } void suppElement(s_livraison **tab, int nBonAsupp, int *nbLivraison){ int i; int j=0; s_livraison *temp; temp = (s_livraison*)malloc ((*nbLivraison-1) * sizeof(s_livraison)); if(temp==NULL) printf("ERREUR \n"); else printf("OK \n"); for(i=0,j=0; i<(*nbLivraison) || j<(*nbLivraison); i++,j++){ //element different de celui à supprimer if((*tab+i)->nBon != nBonAsupp){ //recopie de lelement a garder *(temp+i)=*(*tab+j); }else{ j=j+1; if(j<(*nbLivraison))*(temp+i)=*(*tab+j); } } //Free du tableau free(*tab); *tab=temp; // Taille = taille -1 *nbLivraison = *nbLivraison - 1; }
Partager