begin process at 2012 05 30 04:26:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

Suppression d'occurences dans un tableau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Suppression d'occurences dans un tableau

mercredi 26 octobre 2011 à 10:07:06 | Suppression d'occurences dans un tableau

ronnie10

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 :)
mercredi 26 octobre 2011 à 10:20:10 | Re : Suppression d'occurences dans un tableau

LA_Tupac

Membre Club
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 .
mercredi 26 octobre 2011 à 10:43:30 | Re : Suppression d'occurences dans un tableau

buno

Administrateur CodeS-SourceS
Hello,
Code C/C++ :
for (j=tailleTab-1;j<tailleTab;j--){ 

Elle est là ton erreur: tu décrémentes j "tant qu'il est inférieur à tailleTab". Du coup, il va passer à -1...et crac!

Je plussoie LA_Tupac: les balises "code" sont là pour, justement, rendre le code plus lisible

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mercredi 26 octobre 2011 à 11:04:59 | Re : Suppression d'occurences dans un tableau

ronnie10

désolé les gars, je suis nouveau sur le forum et je ne savais pas comment faire, milles excuses :S
voici donc mon code :
Code C# :
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:
Code C# :
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]);
	}


help please :'(
mercredi 26 octobre 2011 à 11:05:49 | Re : Suppression d'occurences dans un tableau

ronnie10

et la réponse que j'obtiens sur la console :
1
1
2
3
4
mercredi 26 octobre 2011 à 11:52:15 | Re : Suppression d'occurences dans un tableau

buno

Administrateur CodeS-SourceS
Code C/C++ :
free(tab[j]);

Tu penses faire quoi ici?
Littéralement, tu essaie de désallouer...un entier. Or, free demande un pointeur comme paramètre, donc plutôt tab+j

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mercredi 26 octobre 2011 à 12:05:32 | Re : Suppression d'occurences dans un tableau

buno

Administrateur CodeS-SourceS
Et puis non, oublies. On ne désalloues pas "une case" comme cela.
Tu peux, par contre, décaler toutes les valeurs d'après.


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mercredi 26 octobre 2011 à 12:17:04 | Re : Suppression d'occurences dans un tableau

ronnie10

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 :
Code C# :
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;
}


:'( :'(
mercredi 26 octobre 2011 à 12:18:39 | Re : Suppression d'occurences dans un tableau

ronnie10

et le résultat dans la console reste inchangé :
1
1
2
3
4

Remarque qu'il avait bien effacé mon deuxième 2 qui se trouvait en fin de liste, que ce soit avec un free ou avec un décalage :)
mercredi 26 octobre 2011 à 13:44:47 | Re : Suppression d'occurences dans un tableau

buno

Administrateur CodeS-SourceS
Essaie de t'inspirer de ça
Et pour le décalage, regarde la méthode memmove()

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...

1 2

Cette discussion est classée dans : int, tableau, occurences, tab, tailletab


Répondre à ce message

Sujets en rapport avec ce message

tableau char [ par dingue007 ] Voila je dois faire un prog en C++ : un tableau avec les mois de lannée et quand je tape un chiffre il me sort le mois ! mais je narrive pas a faire l Blem Somme ELmt d'un Tableau Bidimensionnel [ par Orezza ] Slt c encore moi, le boulet de l'info...c tjrs le meme prog mais cette fois ci j'aimerais afficher la somme des elmts de mon tableaux.#include #includ Problem Affichage de mon Tableau [ par Orezza ] salut à tous, j'ai un blem à l'affichage du tableau. l'utilisateur parametre son tableau, c lui qui l'initilize mais j'arrive pas à afficher apres le Tableau à 3 dimensions [ par VinceExtense ] Savez vous comment faire passer en paramètre un tableau à 3 dimensions ?void fonction1(int x,iny y,int z){int tab[x][y][z];}void fonction2(int ***tab, Allocation dynamique dans une fonction [ par Veovis ] Salut,Toujours dans mon projet de TP, j'ai un petit soucis avec l'allocation dynamique dans une fonction. Ce que je voudrais faire c'est quand le tabl tri tableau en ligne [ par TWITTI ] bonjour , je suis etudiant en mécanique et la programmtion c est embetant pour moi.J ai un probleme sur mon programme main().Je n arrive pas a faire Tableau en C [ par Mickylord ] Bonsoir a tous !Voici ma question :J'ai une fonction principale, main(), et une autre fonction tab(). Je voudrais déclarer un tableau dans la fonction exclusion d'un Intervalle dans un tableau ... [ par pirana ] Bonjour à tous , j'aimerais sauté un intervale dans un textevoici mon code je pense que ca sera plus explicite :)data[]={01234567ABCDEFLI01234567ABCDE plantage en utilisant le constructeur "new" [ par Ganaga ] Bonjour,J'utilise le constructeur new pour affecter un tableau d'entiers dans une boucle qui s'exécute plus de 10000x. Au bout d'un certain temps (lon tableau [ par imanedaoudi ] Salut,Je veux récuperer le tableaux triée sans faire return, avec ce programme je recupere le tableau non trier ,comment faire pour recuperer le tab t


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales