Supprimer doublons tableau C

Résolu/Fermé
dharth Messages postés 140 Date d'inscription dimanche 6 avril 2008 Statut Membre Dernière intervention 23 août 2012 - 25 nov. 2010 à 15:36
dharth Messages postés 140 Date d'inscription dimanche 6 avril 2008 Statut Membre Dernière intervention 23 août 2012 - 25 nov. 2010 à 16:02
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
A voir également:

2 réponses

dharth Messages postés 140 Date d'inscription dimanche 6 avril 2008 Statut Membre Dernière intervention 23 août 2012 13
25 nov. 2010 à 16:02
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):
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.
2
Brendonuts Messages postés 58 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 10 décembre 2010 12
25 nov. 2010 à 15:47
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
1
Brendonuts Messages postés 58 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 10 décembre 2010 12
25 nov. 2010 à 15:51
Après réflexion, le dernier parcours est inutile : on peut créer le tableau directement dans le Si...
0