Supprimer les doublons d'un tableau en C

[Fermé]
Signaler
Messages postés
10
Date d'inscription
mercredi 13 octobre 2010
Statut
Membre
Dernière intervention
11 mars 2011
-
Messages postés
6
Date d'inscription
vendredi 24 août 2012
Statut
Membre
Dernière intervention
1 février 2013
-
Bonjour,

Je dispose de deux tableaux en langage C.

t1 = [1,5,3,4,1,3,4,5] et t2 un tableau vide.

J'aimerais qu'au final t2 contiennent les mêmes éléments que t1 sans les doublons, peut importe de l'ordre.

t2 = [1,5,3,4,3]

Je ne sais pas comment faire,

Merci de votre aide.

2 réponses

Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 784
Bonjour,
Il suffit de faire deux boucles for.
La première boucle for pour parcourir tous les éléments du tableau 1, la deuxième pour parcourir le tableau 2 (jusqu'à la position courante) pour vérifier les doublons.

Commence déjà par faire la copie de t1 dans t2, et poste le code ici.
On te donnera plus de directive si jamais c'est toujours pas assez clair.

Cdlt,
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
6
Date d'inscription
vendredi 24 août 2012
Statut
Membre
Dernière intervention
1 février 2013
1
#include <stdio.h>
#include<conio.h>
main()
{
/* Déclarations */
int A[50]; /* tableau donné */
int N; /* dimension du tableau */
int X; /* valeur à éliminer */
int *P1, *P2; /* pointeurs d'aide */

/* Saisie des données */
printf("Dimension du tableau (max.50) : ");
scanf("%d", &N );
for (P1=A; P1<A+N; P1++)
{
printf("Elément %d : ", P1-A);
scanf("%d", P1);
}
printf("Introduire l'élément X à éliminer du tableau : ");
scanf("%d", &X );
/* Affichage du tableau */
for (P1=A; P1<A+N; P1++)
printf("%d ", *P1);
printf("\n");
/* Effacer toutes les occurrences de X et comprimer : */
/* Copier tous les éléments de P1 vers P2 et augmenter */
/* P2 pour tous les éléments différents de X. */
for (P1=P2=A; P1<A+N; P1++)
{
*P2 = *P1;
if (*P2 != X)
P2++;
}
/* Nouvelle dimension de A */
N = P2-A;
/* Edition du résultat */
for (P1=A; P1<A+N; P1++)
printf("%d ", *P1);
printf("\n");
getch();
}