Supprimer doublon d'un tableau

Signaler
Messages postés
9
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
20 mars 2010
-
africanwinners
Messages postés
9
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
20 mars 2010
-
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
A voir également:

7 réponses

Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
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à !
Messages postés
9
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
20 mars 2010

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
Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
Euh ... je pige pas là ! T'as encore besoin d'aide ou l'algo que je t'ai fourni suffit ?
Messages postés
9
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
20 mars 2010

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);
Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
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)
Messages postés
157
Date d'inscription
dimanche 15 octobre 2006
Statut
Membre
Dernière intervention
27 août 2010
4
monBolleen = FAUX ; Je sais pas si ca marche ca aussi ...

Et verifie que la comparaison de deux chaines comme tu le fais marche
Messages postés
9
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
20 mars 2010

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