Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1363 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  pb de trie a bulle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb de trie a bulle

n°483642
xiluoc
un pc pour les unirs ....
Posté le 11-08-2003 à 15:38:30  profilanswer
 

arraystruct est un tableau de structures :

Code :
  1. stuct mystruct
  2. char id;
  3. vector <char> vect)char;
  4. }


 
chaque vecteur contient une liste de lettres, je veus ordonner ces vecteurs par ordre de ID alphabetique.
 
exemple :
 
struct[0]
vecteur : KFGTREFG
vect ID : E
 
struct[1]
vecteru :POLASDWE
vect ID : L
 
ect..
 
le bubble sort ci sessous ne marche pas a tout les coup ..
pour les ID des vecteurs : M A R K
il va me renvoyer A M K R apres le tri ..
key est un string contenant le mot MARK

Code :
  1. for (int i = 1; i<var; i++)
  2.      {
  3.                 for (int j = 0 ; j < var-i ; j++)
  4.                 {
  5.                           if (key[j] > key[j+1])                                  swap(array_struct[j],array_struct[j+1]);
  6.                          
  7.                  }
  8.      }

   :heink:


Message édité par xiluoc le 11-08-2003 à 15:58:19

---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
mood
Publicité
Posté le 11-08-2003 à 15:38:30  profilanswer
 

n°483665
urd-sama
waste of space
Posté le 11-08-2003 à 15:47:55  profilanswer
 

tu veux bien corriger tes fautes de frappe?
edit: merci :)


Message édité par urd-sama le 11-08-2003 à 15:53:24
n°483668
theshockwa​ve
I work at a firm named Koslow
Posté le 11-08-2003 à 15:50:18  profilanswer
 

valeur de var ?


---------------
last.fm
n°483671
xiluoc
un pc pour les unirs ....
Posté le 11-08-2003 à 15:51:39  profilanswer
 

theShOcKwAvE a écrit :

valeur de var ?


longueur de key, ici 4


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
n°483676
xiluoc
un pc pour les unirs ....
Posté le 11-08-2003 à 15:53:11  profilanswer
 

Urd-sama a écrit :

tu veux bien corriger tes fautes de frappe?


ca y est, tu as interet a poster une reponse maintenant  :kaola:


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
n°483690
theshockwa​ve
I work at a firm named Koslow
Posté le 11-08-2003 à 15:57:54  profilanswer
 

test sur key et swap sur array_struct ... C'est normal, ca ?


---------------
last.fm
n°483692
LetoII
Le dormeur doit se réveiller
Posté le 11-08-2003 à 15:58:31  profilanswer
 

xiluoc a écrit :


ca y est, tu as interet a poster une reponse maintenant  :kaola:  


 
Sauf que t'as pas corrigé le titre: c "tir à vu" pas "tir a bulle"
 
 [:ddr555]


---------------
Le Tyran
n°483694
urd-sama
waste of space
Posté le 11-08-2003 à 15:59:21  profilanswer
 

xiluoc a écrit :


ca y est, tu as interet a poster une reponse maintenant  :kaola:  


[:486dx]

n°483703
theshockwa​ve
I work at a firm named Koslow
Posté le 11-08-2003 à 16:01:22  profilanswer
 

chez moi, ton algo marche en faisant pointer array_struct sur key ... (array_struct en char *) mais je ne sais pas si c'est vraiment ce que tu veux ...


---------------
last.fm
n°483710
xiluoc
un pc pour les unirs ....
Posté le 11-08-2003 à 16:04:51  profilanswer
 

theShOcKwAvE a écrit :

test sur key et swap sur array_struct ... C'est normal, ca ?


ben je pense que oui, lorsqu il classe le tableau de structure par ordre d ID alphabetique il bouge toute la structure.
 
exemple
 
 
Struc 0 : 2 elmts : ID 'A' et DATA
Struc 1 : 2 elmts : ID 'M' et DATA
Struc 2 : 2 elmts : ID 'K' et DATA
...
 
'A' < 'M' donc on ne fait rien
'M' > 'K' donc on bouge struct 2 a la place de struct 1 (swap)
 


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
mood
Publicité
Posté le 11-08-2003 à 16:04:51  profilanswer
 

n°483713
theshockwa​ve
I work at a firm named Koslow
Posté le 11-08-2003 à 16:09:12  profilanswer
 

dans ce cas, il faut aussi que tu appliques tes modifs sur key ... Sinon, ton tri à bulles est faux ... Ce serait pas ca, tout bêtement, ton pb ?


---------------
last.fm
n°483715
theshockwa​ve
I work at a firm named Koslow
Posté le 11-08-2003 à 16:11:44  profilanswer
 

j'ai dupliqué la caine dans array_struct au lieu de simplement le faire pointer sur la chaine et j'arrive à ton problème, c'est donc que tu dois rajouter un échange des infos dans la chaine ou travailler directement àavec la chaine que tu modifies (cette solution me semble quand même plus propre !)
 
Edit : nom de var :whistle:


Message édité par theshockwave le 11-08-2003 à 16:42:31

---------------
last.fm
n°483716
xiluoc
un pc pour les unirs ....
Posté le 11-08-2003 à 16:12:30  profilanswer
 

theShOcKwAvE a écrit :

dans ce cas, il faut aussi que tu appliques tes modifs sur key ... Sinon, ton tri à bulles est faux ... Ce serait pas ca, tout bêtement, ton pb ?


 
mais, ouuuuiiiii  :wahoo:  
parceque la, je tri en fonction des lettres, et je les changes en plein milieu.


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
n°483718
Taz
bisounours-codeur
Posté le 11-08-2003 à 16:15:34  profilanswer
 

c'est nul comme solution. mieux vaut utiliser std::sort

n°483719
xiluoc
un pc pour les unirs ....
Posté le 11-08-2003 à 16:15:45  profilanswer
 

Code :
  1. for (int i = 1; i<var; i++)
  2.      {
  3.                 for (int j = 0 ; j < var-i ; j++)
  4.                 {
  5.                           if (key[j] > key[j+1])
  6.                           {
  7.                                    swap(array_struct[j],array_struct[j+1]);
  8.                                    swap (key[j],key[j+1]);
  9.                           }
  10.                  }
  11.      }

 
 :sol:


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
n°483720
Taz
bisounours-codeur
Posté le 11-08-2003 à 16:16:25  profilanswer
 

bof. je suis au taf là, on en reparle plus tard si tu veux

n°483722
xiluoc
un pc pour les unirs ....
Posté le 11-08-2003 à 16:16:44  profilanswer
 

Taz a écrit :

c'est nul comme solution. mieux vaut utiliser std::sort


j ai essaye mais j ai pas bien compris les parametres qu il fallait passer dans mon cas.


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
n°483723
Taz
bisounours-codeur
Posté le 11-08-2003 à 16:17:16  profilanswer
 

xiluoc a écrit :


j ai essaye mais j ai pas bien compris les parametres qu il fallait passer dans mon cas.

je te montrerais quand j'aurais le temps

n°483725
xiluoc
un pc pour les unirs ....
Posté le 11-08-2003 à 16:19:35  profilanswer
 

Taz a écrit :

je te montrerais quand j'aurais le temps


ok , tks  [:alarmclock119]  
 
 
merci a Shockwave  :hello:  
t as meme pris le temps de tester .


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
n°483749
theshockwa​ve
I work at a firm named Koslow
Posté le 11-08-2003 à 16:34:53  profilanswer
 

Code :
  1. std::sort(key, key+strlen(key)); // Trie le tab ...


 
il semblerait que ce soit pas dispo dans la STL de microsoft :sarcastic: donc télécharges-en une autre si tu utilises Visual ...
 
pour trier ton tableau de structures, tu devras sans doute passer par un sort du style :

Code :
  1. bool compare(mastruct e1, mastruct e2) {
  2.   // ...
  3. }
  4. // ...
  5. std::sort(array_struct, array_struct + (sizeof(array_struct) /sizeof(int)), compare);


 
 
Si j'ai dit une connerie, Taz me corrigera, je compte sur lui ! :D
 
Edit : plein plein plein d'edits ! :whistle:


Message édité par theshockwave le 11-08-2003 à 16:40:58

---------------
last.fm
n°483764
Taz
bisounours-codeur
Posté le 11-08-2003 à 16:44:30  profilanswer
 

ouais, c'est bof, mais sur le principe c'est ça

n°483778
theshockwa​ve
I work at a firm named Koslow
Posté le 11-08-2003 à 16:55:36  profilanswer
 

Taz a écrit :

ouais, c'est bof, mais sur le principe c'est ça


 
Ben ... Quand tu auras le temps, tu viendras nous expliquer pourquoi c'est bof ! :D Parce que ca ne me parait pas si bof que ca ! Pour que ce soit moins bof, il faudrait faire un "vrai" itérateur ... Style passer par une structure de données plus évoluée qu'un simple tableau et il faudrait implémenter l'opérateur < sur sa structure, non ?
 
 
Edit : j'oublie des mots ! Décidément ! :D


Message édité par theshockwave le 11-08-2003 à 16:56:15

---------------
last.fm
n°483824
Taz
bisounours-codeur
Posté le 11-08-2003 à 17:26:26  profilanswer
 

on reprend doucement
 
on peut effectivement surcharger operator<, là on montre avec un comparateur: un objet qui est chargé de comparé 2 objets. définir une fonction doit fonctionner, mais autant voir une bien meilleur méthode -> un objet fonction. ça vous permet beaucoup plus de chose, vu que votre objet à aussi un constructeur. vous pourriez donc lui passer un paramètre pour modifier un peu le sens de la comparaison... bref plein de possibilité
 

Code :
  1. class MaStructComparator
  2. {
  3. public:
  4.   bool operator()(const mastruct &e1, const mastruct &e2) const
  5.   {
  6.       // ...
  7.   }
  8. }


 
 
bon apres le tableau C, ça va un moment. si vous passez veaiment par ça, déclarez une constante N. sinon -> vector, etc  
 

Code :
  1. std::sort(array_struct, array_struct + N), MaStructComparator());


 
(notez l'instanciation d'un MaStructComparator)
 
sinon je veux pas voir de strlen ou autre foutaise de char*.
 
OK?

n°483905
theshockwa​ve
I work at a firm named Koslow
Posté le 11-08-2003 à 18:35:31  profilanswer
 

Taz a écrit :


Code :
  1. class MaStructComparator
  2. {
  3. public:
  4.   bool operator()(const mastruct &e1, const mastruct &e2) const
  5.   {
  6.       // ...
  7.   }
  8. }




 
L'opérateur te retourne en fait la fonction qui est définie ? Et tu n'as pas besoin de mettre l'opérateur en statique :heink: Ca me surprend un peu ... Je crois que je vais retourner "bouquiner" un peu :D


---------------
last.fm
n°484357
xiluoc
un pc pour les unirs ....
Posté le 12-08-2003 à 05:29:35  profilanswer
 


Code :
  1. class MaStructComparator
  2. {
  3. public:
  4.   bool operator()(const mastruct &e1, const mastruct &e2) const
  5.   {
  6.       // ...
  7.   }
  8. }


 :whistle: operator() ca represente quoi ?
et pour ya un const a la fin ?
 
c est possible d avoir le // ... rempli ?  
 

Code :
  1. {
  2.     return (mastruct e1.id <mystruct e2.ID)
  3. }

 
?


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
n°484361
Taz
bisounours-codeur
Posté le 12-08-2003 à 07:07:51  profilanswer
 

operator()
 
ben l'opérateur d'appel, comme pour une fonction
 
Mon objet o;
 
o();
 
 
 
et oui

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  pb de trie a bulle

 

Sujets relatifs
[vc]comment faire un trie par date ?quest sur les algos de tris (à bulle, par insertion), nb de coups max
[VB] Trie dans une ListView qui déconneimpossible de mettre une info-bulle pour un <input...> ?
Trie en ordre inverse[résolu] popup ou bulle d'info intégré au code de la page html
trie datetrie par fusion
retour à la ligne dans une info-bulleinfo bulle dans un select box
Plus de sujets relatifs à : pb de trie a bulle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR