Supprimer doublons

Signaler
Messages postés
33
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
24 septembre 2005
-
Messages postés
8
Date d'inscription
dimanche 20 novembre 2005
Statut
Membre
Dernière intervention
18 janvier 2009
-
Voila j'ai un fichier texte contenant des adresses mails.
De ce style =>

marcel@xxx.com
dede@xxx.com
josé@xxx.com

Dans ce fichier , on est sur qu'il y a des doublons.
De ce style =>

dede@xxx.com
...
marcel@xxx.com
dede@xxx.com
josé@xxx.com
...
marcel@xxx.com

Mais on les connais pas a l'avance.

Mon probleme est plus situé au niveau algorithmique.
Je vois pas comment faire pour les supprimer.
Need help :)

10 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
ben si t'es sous un systeme unix te fais pas chier

sort mails.txt | uniq > mails.txt

sinon l'algo est simple, tu lit chaque lignes que tu stocke dans un tableau en cherchant si elle ne s'y trouve pas deja, plus performant si c'est trié
Messages postés
33
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
24 septembre 2005

Le prog est destiné a une plateforme windows donc le choix et vite fait :big)

en tout cas niveau algo j'ai pas trop d'idee pour trier et supprimer. Vais voir dans mon livre d'algo :)
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
moi je propose

- tu lis le fichier dans un tableau de chaines (tres simple, à coup de fgets)
- tu tris ce tableau avec qsort
- tu le parcours sequentielement en verifiant que l'element n est different de n-1 ...

en fait c'est pas si dur ?
Messages postés
33
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
24 septembre 2005

oui vu comme ca :)

va falloir faire une allocation dynamik vu ke la taille des element et inconnue ?
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
oui

faudra compter le nombre de lignes et allouer en consequence

si c'est possible, je te conseilles de faire ca en c++, ca tiendras en moins de 10 lignes :)
Messages postés
33
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
24 septembre 2005

euh je connais pas trop le C++ ,j'ai deja du mal en C :)
Messages postés
33
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
24 septembre 2005

bon j'ai chercher un ti peu voila:

#include <stdio.h>
#include <conio.h>

int main(void) {

FILE * fic;
int i,j;
char * vect[20];

fic = fopen("fichier.txt", "r+");
i=0;
while(i<20 && !feof(fic))
{
fgets(vect[i], sizeof(vect[i]), fic);
i++;
}
fclose(fic);

for(j=0;j<20;j++)
{
printf("%s",vect[j]);
}

getch();

return 0;
}

La c juste pour lire les lignes du fichier texte est les ranger dans un vecteur.
Ca bug :big) je m'embrouille !
Need help
Messages postés
8
Date d'inscription
dimanche 20 novembre 2005
Statut
Membre
Dernière intervention
18 janvier 2009

c'est pas resolu!!! on m'a dit que c'etais resolu!!
Messages postés
33
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
24 septembre 2005

Le déterreur de post, le retour warf warf warf :)
Il a plus de 4 ans le message.

La solution a été trouvée en combinant le qsort avec un tableaux à plusieurs dimensions.
si je retrouve mes sources, je les posterais.
Messages postés
8
Date d'inscription
dimanche 20 novembre 2005
Statut
Membre
Dernière intervention
18 janvier 2009

désolé mais j'en ai "besoin"... :-S

Merci a cleui qui me trouve LA solution :D