Bonsoir,
toujours par rapport à l'allocation dynamique de tableaux, j'ai un core dumped que je n'arrive pas à m'expliquer.
Peut-être aurez vous un meilleur oeil que le mien
Tout d'abord voici donc mes deux structures de taf
J'ai commencé par faire une fonction me permettant de récupérer le frequence_element max d'un tabFrequence
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 typedef struct frequence_element{ int element; int frequence; }frequence_element; typedef struct tabFrequence { int size; frequence_element* tab; }tabFrequence;
Le problème ne me semble pas venir d'ici étant donné que je récupère bien la bonne donnée, mais je préfère la mettre au xas où.
Et la fonction en cause de l'erreur de segmentation.
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 frequence_element recupMax(tabFrequence myTab){ int taille=myTab.size; frequence_element max; max.element=-1; max.frequence=-1; for(int k=0;k<taille;k++){ if(max.frequence < myTab.tab[k].frequence){ max=myTab.tab[k]; }else{ if(max.frequence == myTab.tab[k].frequence){ if(max.element > myTab.tab[k].element){ max=myTab.tab[k]; } } } } return max; }
En rouge, j'ai repéré la ligne provoquant l'erreur
Le but de cette fonction est donc de retourner le tableau de tabFrequence privé de son frequence_element maximum el
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 //Supprime l'élément de fréquence max le plus petit tabFrequence deleteMax(tabFrequence myTab,frequence_element el){ tabFrequence myTab2; myTab2.size=myTab.size-1; int knew=0; for(int k=0;k<myTab.size;k++){ printf("%d\n",k); if((myTab.tab[k].element != el.element)&&(myTab.tab[k].frequence != el.frequence)){ //si pas le max printf("el %d freq %d\n",myTab.tab[k].element,myTab.tab[k].frequence);//trace qui vérifie que l'élément inséré est correct OK myTab2.tab[knew]=myTab.tab[k]; knew++; printf("test\n");//ne s'affiche pas car core dumped avant } } return myTab2; }
Dans mon exemple j'ai un tab de frequence tel que
size=2
myTab.tab[0].element=2
myTab.tab[0].frequence=2
myTab.tab[1].element=1
myTab.tab[1].frequence=1
avec el.element=2 et el.frequence=2
Mon premier tour de boucle k=0 ignore bien le if.
L'erreur se produit sur le k=1 au moment de l'insertion.
Merci pour votre aide !
Partager