cs_ronnie10
Messages postés6Date d'inscriptionvendredi 12 mars 2010StatutMembreDernière intervention26 octobre 2011
-
26 oct. 2011 à 10:07
cs_ronnie10
Messages postés6Date d'inscriptionvendredi 12 mars 2010StatutMembreDernière intervention26 octobre 2011
-
26 oct. 2011 à 18:51
Bonjour,
Y a t-il quelqu'un qui pourrait m'aider avec mon algorithme s'il vous plait? En effet, je souhaite effacer des occurences dans un tableau. A la compilation, pas d'erreurs mais à l'éxécution, erreur de segmentation.
Voici mon code :
void supprimeDoublonsTab(int* tab, int tailleTab){
int i, j;
for (i=0;i<tailleTab;i++){
for (j=tailleTab-1;j<tailleTab;j--){
if (tab[i] == tab[j]){
free(tab[j]);
tailleTab--;
realloc(tab, tailleTab);
}
}
}
}
Merci d'avance pour l'aide que vous pourries m'apporter :)
A voir également:
Supprimer les occurrences dans un tableau en c
Nombre d'occurence dans un tableau en c - Meilleures réponses
Algorithme nombre d'occurence dans un tableau - Meilleures réponses
cs_LA_Tupac
Messages postés305Date d'inscriptionjeudi 29 avril 2004StatutMembreDernière intervention18 janvier 20121 26 oct. 2011 à 10:20
Salut.
}
}
}
}
S'il vous plait faites des efforts pour utiliser les balises code et décaler vos blocks {} pour que ce soit lisible.
Je ne me fatiguerai pas a lire ce code même s'il est court .
cs_ronnie10
Messages postés6Date d'inscriptionvendredi 12 mars 2010StatutMembreDernière intervention26 octobre 2011 26 oct. 2011 à 11:04
désolé les gars, je suis nouveau sur le forum et je ne savais pas comment faire, milles excuses :S
voici donc mon code :
int* supprimeDoublonsTab(int* tab, int tailleTab){
int i, j;
for (i=0;i<tailleTab;i++){
for (j=tailleTab-1;j>tailleTab;j--){
if (tab[i] == tab[j]){
free(tab[j]);
tailleTab--;
realloc(tab, tailleTab);
}
}
}
return tab;
}
et du coup j'ai testé dans un main avec un tableau, et la réponse n'est pas ce que j'attendais.. :'(
mon code dans le main pour la déclaration de mon tableau et l'affichage de celui ci:
int* tab = (int*)malloc(sizeof(int)*6);
tab[0]=1;
tab[1]=1;
tab[2]=2;
tab[3]=3;
tab[4]=4;
tab[5]=2;
supprimeDoublonsTab(tab,6);
int i;
for (i = 0; i<=sizeof(tab);i++){
printf("%d\n", tab[i]);
}
cs_ronnie10
Messages postés6Date d'inscriptionvendredi 12 mars 2010StatutMembreDernière intervention26 octobre 2011 26 oct. 2011 à 12:17
mais avec le free, ça peut aussi marcher non? puisqu'il supprime bien mon dernier élément de mon tableau?
j'ai essayé de faire avec un décalage mais rien à faire les deux premiers 1 restent toujours :'(
voici mon code :
int* supprimeDoublonsTab(int* tab, int tailleTab){
int i, j;
for (i=0;i<tailleTab;i++){
for (j=tailleTab-1;j>tailleTab;j--){
if (tab[i] == tab[j]){
tab[j]=tab[j+1];
tailleTab--;
}
}
}
return tab;
}