Supprimer doublons tableau C
Résolu
dharth
Messages postés
140
Date d'inscription
Statut
Membre
Dernière intervention
-
dharth Messages postés 140 Date d'inscription Statut Membre Dernière intervention -
dharth Messages postés 140 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je dispose d'un char **tab, qui contient x rangés contenant chacune une chaine.
Je souhaiterais supprimer les doublons pour former un nouveau tableau.
exemple :
tab[0] = "toto";
tab[1] = "titi";
tab[2] = "toto";
tab[3] = "titi";
tab[4] = "tata";
et je voudrais créer une fonction comme array_unique en php qui me permettrait de récupérer dans un nouveau tableau :
new[0] = "toto";
new[1] = "titi";
new[2] = "tata";
Quelqu'un à une idée pour construire l'algo?
merci
je dispose d'un char **tab, qui contient x rangés contenant chacune une chaine.
Je souhaiterais supprimer les doublons pour former un nouveau tableau.
exemple :
tab[0] = "toto";
tab[1] = "titi";
tab[2] = "toto";
tab[3] = "titi";
tab[4] = "tata";
et je voudrais créer une fonction comme array_unique en php qui me permettrait de récupérer dans un nouveau tableau :
new[0] = "toto";
new[1] = "titi";
new[2] = "tata";
Quelqu'un à une idée pour construire l'algo?
merci
A voir également:
- Supprimer doublons tableau C
- Supprimer rond bleu whatsapp - Guide
- Tableau word - Guide
- Tableau ascii - Guide
- Supprimer une page word - Guide
- Trier un tableau excel - Guide
2 réponses
Merci pour cette réponse, mais en fait j'ai trouvé, dans mon tableau les doublons se suivent obligatoirement, donc j'ai fait ceci (tab_new étant déja malloc):
et ca fonctionne.
while (tab_src[c] != NULL) { while (strcmp(tab_src[c], tab_new[d]) == 0) c++; d++; strcpy(tab_new[d], tab_src[c]); c++; }
et ca fonctionne.
Bonjour,
Pour i allant de 0 à tailletableau-1, faire,
Pour j allant de i+1 à taille-tableau-1, faire,
Si strcmp(tab[i],tab[j]), alors tab[j]=="";
fait
fait
Puis un parcours sur le tableau : si tab[n] != "", je stocke, sinon je passe au suivant.
Par contre, la comparaison de deux chaines de caractères en C doit se faire via une fonction précise type strcmp(chaine1, chaine2), et surtout pas de == !
Bonne chance
Pour i allant de 0 à tailletableau-1, faire,
Pour j allant de i+1 à taille-tableau-1, faire,
Si strcmp(tab[i],tab[j]), alors tab[j]=="";
fait
fait
Puis un parcours sur le tableau : si tab[n] != "", je stocke, sinon je passe au suivant.
Par contre, la comparaison de deux chaines de caractères en C doit se faire via une fonction précise type strcmp(chaine1, chaine2), et surtout pas de == !
Bonne chance