Supprimer doublon d'un tableau

Messages postés
9
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
20 mars 2010
- - Dernière réponse : africanwinners
Messages postés
9
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
20 mars 2010
- 20 mars 2010 à 00:21
bonjour tout le monde
est ce que vous pouvez m'aidez à faire un algorithme qui permet de supprimer les doublons d'un tableau de chaine de caractères.
merci
Afficher la suite 

7 réponses

Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
0
Merci
Salut !
newTab[tab.length]
indexNewTab = 0
de i=0 a i<tab.length
chaine1 = tab[i]
existeEnDouble = false
de j=i a j<tab.length
chaine2 = tab[j]
if (chaine2 == chaine1)
existeEnDouble = true
findDeBoucle
if(!existeEnDouble)
newTab[indexNewTab++] = tab[i]
finDeBoucle

Voilà !
Commenter la réponse de deadhand
Messages postés
9
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
20 mars 2010
0
Merci
salut

merci beaucoup pour l'aide
j'ai oublié de spécifier que ce code est en cet que je lis le contenu d'un fichier et que je le met dans un tableau à2 dimensions

voila le code que j'ai fait et que je n'arrive pas à régler


#include<stdio.h>
#include <string.h>
#include <stdlib.h>


int main()
{
FILE* fichier = NULL;
FILE * sortie;



int i=0;
int k=0;
int l=0;
int m=0;
int n=0;
int h=0;
char chaine[100];
char * tab[2000][100];
char * cab[2000][100];

int j=0;


fichier = fopen("re-lem","r");
sortie = fopen("l", "w");

if (fichier!=NULL)
// Boucle de lecture du fichier:je met chaque chaine dans

//une case du tableau
do

{
fgets(chaine,100,fichier);


tab[i][j]=chaine;
fputs(tab[i][j],sortie);




i=i+1;
} while (!feof(fichier) && chaine!="</DOC>"); // On continue tant que c'est pas la fin ,lorsqu'on trouve </DOC> on change de incrémente j

j++;

}

fclose(fichier);
fclose(sortie);





merci pour l'aide
Commenter la réponse de africanwinners
Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
0
Merci
Euh ... je pige pas là ! T'as encore besoin d'aide ou l'algo que je t'ai fourni suffit ?
Commenter la réponse de deadhand
Messages postés
9
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
20 mars 2010
0
Merci
merci j'essaie de le coder en c
voila ce que j'ai fait mais ca donne pas de résultat
est ce que vous pouver m'indiquer ou est l'erreur
sanchant que je veux lire un fichier , éliminer les doublons et écire sur le fichier sortie
merci.


#include<stdio.h>
#include <string.h>
#include <stdlib.h>


int main()
{
FILE* fichier = NULL;
FILE * sortie;



int i=0;
int k=0;
int l=0;
int m=0;
int indexNewTab=0;
int n=0;
char chaine[100];
char * chaine1[100];
char * chaine2[100];
char * tab[2000];
char * newTab[2000];
typedef enum { FAUX, VRAI } BOOL;

BOOL monBolleen;


int j=0;


fichier = fopen("k","r");
sortie = fopen("l", "w");

if (fichier!=NULL)

do

{
fgets(chaine,100,fichier);


tab[i]=chaine;


for (m=0;m<=i;m++)
{
*chaine1= tab[m];
monBolleen = FAUX ;
for (n=m;n<=i;m++)
{
*chaine2=tab[n];

if (chaine2 == chaine1)
monBolleen = VRAI ;
}
if(!monBolleen)
newTab[indexNewTab] = tab[m];
indexNewTab++;
}



fputs(newTab[indexNewTab],sortie);

printf("%s",tab[i] );
// On lit le caractère
// On l'affiche


i=i+1;
} while (!feof(fichier) && chaine!="</DOC>"); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
j++;
m++;
}



fclose(fichier);
fclose(sortie);
Commenter la réponse de africanwinners
Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
0
Merci
for (m=0;m<=i;m++) : déjà il y a ca. Tu as mis 'i' est c'est la taille du tableau qu'il faut mettre. La condition doit être strictement inférieur car un tableau tu la parcours de 0 à taille-1.

for (n=m;n<=i;m++) : Là pareil ! Tu dois mettre la taille du tableau et incrémenté n et pas m (et n'oulie pas le truc de la taille du tableau)
Commenter la réponse de deadhand
Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
0
Merci
monBolleen = FAUX ; Je sais pas si ca marche ca aussi ...

Et verifie que la comparaison de deux chaines comme tu le fais marche
Commenter la réponse de deadhand
Messages postés
9
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
20 mars 2010
0
Merci
je crois qu'il ya une erreur lors de la lecture des pointeurs mais j'ai pas déterminer laquelle
car pour la lecture du fichier c simple mais le problème se trouve lors de la suppression des doublons

svp aidez moi
Commenter la réponse de africanwinners