Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : suppression de doublons dans un tableau [ Algorithme / Autre ] (lola937)

mardi 13 novembre 2007 à 13:49:37 | suppression de doublons dans un tableau

lola937

Bonjour, je travaillle actuellement sur les tableaux et les tris.Le programme que je dois réaliser est le suivant:

Soient t un tableau de taille n et k le nombre d'éléments distincts de t.Supprimer les doublons dans t lui-même.De plus, si le tableau t est trié au déoart, alors que la portion formée des k premiers éléments de doit l'être également après la transformation.Par exemple,pour n=10:
     si t= 10 10 10 10 15 15 15 20 30 30  au départ
alors t= 10 15 20 30  #   #   #  #   #   #  après transformation et k=4 ou # est une valeur quelconque.
l'ordre dans lequel apparaissent les éléments après la transformation, n'a aucune importance si le tableau n'est pas trié.
Ecrire un algorithme pour résoudre le problème dans le cas où le tableau de départ est trié (idée:pour tout élément x apparaissant dans t, on ne garde que sa première occurence).

void Doublon(int tab[])
{
 int k=1,i;
 /* en parcourant le tableau, des que l'element suiant est different du precedent, on incremente k et on fait remonter les elements distincts au debut du tableau */
 for(i=0;i<N;i++)
                 {
                  if(tab[i+1] != tab[i]){k++ ; Echange(&tab[i],&tab[?])};/* c'est ici qu'est le probleme */
                  }
 /*une fois que l'echange est fait,il faut, a partir de l'indice k, remplacer les elements du tableau par des # */
 for(i=k;i<N;i++)
                 {
                  tab[i] = '#';
                  }
}

Je voudrais procéder par échange pour faire remonter la première occurence de chaque élément distinct du tableau, mais je ne sais pas vraiment comment faire(et surtout où le faire dans le programme pour qu'il soit rigoureux).Et vous??
Si par hasard vou avez une réponse, je vous remercie d'avance.


---->Lola<----^^


mardi 13 novembre 2007 à 14:58:31 | Re : suppression de doublons dans un tableau

Loda

Membre Club
Réponse acceptée !
salut,

d'abord, c'est du JAVA et ici c'est un forum DELPHI.

bon, comme t'a l'air de débuter, je vais quand même te filer quelques indications (on est tous passé par là):

"l'ordre dans lequel apparaissent les éléments après la transformation, n'a aucune importance si le tableau n'est pas trié."
"si le tableau t est trié au déoart, alors que la portion formée des k premiers éléments de doit l'être également après la transformation"
==> 1er action de ton algo: trier le tableau. si tu sais pas comment faire, demande a google.

"# est une valeur quelconque."
"/*une fois que l'echange est fait,il faut, a partir de l'indice k, remplacer les elements du tableau par des # */"
==> moi, je comprend "valeur quelconque" comme "laisse le comme il est. Le reste du tableau est sans importance"

"des que l'element suiant est different du precedent, on incremente k et on fait remonter LE element distinct A L'INDICE K du tableau */"
d'ailleurs, je pense que tu devrait initialiser K à 0 (vu que tu l'incrément AVANT de l'utiliser)

si ton tableau est de TAILLE N, le for s'écrit  for(i=0;i<N-1;i++)
i<N-1 car, tu test i+1 !!
pense toujours à vérifier que tes indices sont correct dans les cas limites (dàbut+fin de boucle)

pour ta question,

"Je voudrais procéder par échange" pourquoi par échange? pourquoi ne pas juste insérer la valeur à K?

je dirais:
{k++; tab[k] = tab[i+1];} //sachant que k<=i+1 est toujours vrai

insiste jusqu'à ce que tu comprenne bien cet exo. il est pas très difficile, et si tu fait sans comprendre tu vas être perdu pour les prochains.

question bonus:
comment retourne tu la valeur ? fait un testeur avec un affichage pour voir "avant vs après"

aller, je te file un super truc pour ce genre d'exo:
faire des exemples sur papier avec des tableau de 5-10 items. représente en premier un état de départ et l'état d'arrivée. puis les étapes intermédiaires selon ton algo.

bon code,

Loda

Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.

mardi 13 novembre 2007 à 17:25:26 | Re : suppression de doublons dans un tableau

lola937

merci!!!!!!!

---->Lola<----^^

mercredi 14 novembre 2007 à 09:15:54 | Re : suppression de doublons dans un tableau

Loda

Membre Club
de rien.

Loda

Les questions bien posées méritent des réponses bien faites.



Cette discussion est classé dans : tableau, tab, trié, éléments, doublons


Répondre à ce message

Sujets en rapport avec ce message

passer un tableau de variant à un paramètre Integer [ par manudel ] Je déclare un tableau de Variant : tab := VarArrayCreate([0,100],varVariant);que j'alimente.quand il est alimenté, il a cette forme :1,2,3,4,5,6,7,8, Recupérer les coordonnées dans tableau [ par djalouk ] Voila, dans le cadre de mes études, je developpe un petit jeu de pion.Alors j'ai crée dynamiquement un tableau de tshape de la facon suivantebegin Fo Comment faire un tableau de variables?? [ par xyowz ] Bonjour, je suis débutant et je cherche à faire un tableau de variables.. Je m'explique:je prend le tableau suivant par ex: 1 2 3 Problème avec un set length [ par TierSeN ] Bonjour tous le monde mon problème et délicat et une des solution qui consiste a créer un type me bloque.J'ai en fait une unit dans laquelle je déclar tableau multi dimensions [ par Cisaks ] Bonjour, J'aurais voulu avoir de l'aide sur le fait de trier un tableau a double dimensions ex: tab[0][0] = 'test' tab[0][1] = 123 -- tab[1][0] = 'tit a n'en plus rien comprendre. Deux même valeurs qui lors du test indique false [ par Nargzul ] Bonjour,J'ai un tableau, dans lequel je dois tester si les chiffre du tableau sauf le dernier sont égaux au dernier chiffre de ce même tableau. C'est Problème de tableaux... [ par orelien ] Bonjour,J'aimerais créer un tableau à deux dimensions et y insérer des chiffres (des entiers).Les valeurs horizontales sont des entiers et celles de l Initialiser tous les éléments d'un tableau en même temps ? [ par John Dogget ] Bonjour.J'ai un tableau à une dimension déclaré comme ça :    Coordonnees:array[1..2] of byte;Je voudrais savoir comment écrire une fonction qui initi Remplir Tableau deux dimensions [ par lusitano69 ] Bonjour j'aimerais savoir comment remplir un tableau a deux dimensions.Avec ces données là que j'ai dans un fichier a part txt remplir mon tableau de copie de tableau [ par greg38bj ] salut à tousVoilà, suite à des problèmes de dépassement de capacité pour certains calculs en vb, je me suis mis au delphi.Je rencontre un probleme de


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,203 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.