N'ajouter qu'un élément unique à un tableau en C

cs_aurel_67_1 Messages postés 3 Date d'inscription dimanche 12 novembre 2006 Statut Membre Dernière intervention 3 décembre 2010 - 3 déc. 2010 à 15:36
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 3 déc. 2010 à 17:33
Bonjour,

j'ai plusieurs chaine (char *), plusieurs sont identiques, et je ne voudrais ajouter que celles qui ne sont pas encore dans le tableau.

Exemple :
les chaines : "titi", "toto", "tata", "titi", "tutu", "toto"

ne stockera que dans le tableau ["titi","toto","tata","tutu"]

Merci d'avance,

Aurel

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 déc. 2010 à 15:51
Je t'ai fait tout cuit tout prémaché le code de ta question précédente, faut pas en prendre l'habitude.

Propose un début de travail sérieux et il y aura surement quelqu'un ici pour t'aider.

ciao...
BruNews, MVP VC++
0
cs_aurel_67_1 Messages postés 3 Date d'inscription dimanche 12 novembre 2006 Statut Membre Dernière intervention 3 décembre 2010
3 déc. 2010 à 17:24
Mon travail serait trop compliqué à décortiquer. Il s'agit d'un projet conséquent et je bloque sur cette histoire de tableau.
J'ai laissé tombé l'histoire de créer un nouveau tableau sans doublons à partir du premier. Ça me parait inutile en y re-pensant.

Je cherche directement à stocker les données qui viennent en fait dans mon projet d'une pile de type Personne.

Mon type Personne :

/* structure article */
typedef struct str_personne {
int id; //id de la personne
        char * nom;
        char * prenom;
int age;
}Personne;


Ma pile de personnes :

typedef struct str_p_personnes
{
    Personne p;
    struct str_p_personnes *precedent;
}Spile, *P_Personnes;


Ma fonction doit afficher les personnes par noms. (C'est pour cela que je cherche le moyen d'afficher qu'une seule fois le nom.



Exemple :
DUPONT
Pierre
Marie

SMITH
Jean

Ma fonction actuelle :

void impression(P_Personnes pers)
{
Nat nb = hauteur(p); //hauteur de la pile

Chaine noms [nb]; //tableau de stockage des categories
Personne p = initialisation();
P_Personnes q;

int i;
for(i=0;i<nb;i++)//on sauvegarde dans une pile temporaire
{
p = sommet(pers);
q=empiler(q,p);
pers=depiler(pers);
}


for(i=0;i<nb;i++)
{
p = sommet(q);
pers=empiler(pers,p);

while(pers.nom!=noms[i])
{
i++; //c'est ici que je cherche à n'avoir qu'une seule fois le nom
}
q=depiler(q);
}

for(i=0;i<nb;i++)
{
printf("Nom %s\n",noms[i]);


Nat j;
for(j=0;j<nb;j++)
{
p = sommet(pers);
q=empiler(q,p);
pers=depiler(pers);
}

Nat k;
for(k=0;k<nb;k++)
{
p = sommet(q);
pers=empiler(pers,p);

if(p.nom==noms[i])
{
printf("%d\n",p.prenom);
}
q=depiler(q);
}
printf("\n");
}
}


Voilà, j'espère que c'est plus compréhensible,

Aurel
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
3 déc. 2010 à 17:33
strcmp() te dira si est deja dans la pile.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous