begin process at 2008 08 29 21:06:01
1 233 885 membres
407 nouveaux aujourd'hui
14 294 membres club

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 : tri a bulle dans un stringGrid [ Archives / Graphique ] (tony_73)

tri a bulle dans un stringGrid le 25/04/2006 17:16:55

tony_73

voila j'ai un probleme avec un tri a bulle ou plutot le stringGrid.

Je voudrais trier des cellules (numerotées de 1 à x) dans l'ordre croissant. sauf que si j'ai un numéro 10 dans une cellule il considere que c'est la valeur 1 et est classé juste après le 1. En gros il me classe que 9 valeurs alors je sais pas si c'est mon code de tri a bulle qui est pas bon ou le stringGrid qui ne peut prendre 2 nbres en valeurs en tt cas voici mon code de tri :

//Permet d'afficher les équipes dans l'ordre du classement
var i,j,val : integer;
   procedure Permuter(a,b : integer);
   //échange les lignes a et b de la grille grClassement
   var ch : string;
    i  : integer;
   begin
      with FormClassement.StringGridClassement do
      for i := 0 to 7 do
      begin
         ch := cells[i,a];
         cells[i,a] := cells[i,b];
         cells[i,b] := ch;
      end;
   end;

begin
   with FormClassement.StringGridClassement do
   for i := 1 to NbEquipes - 1 do
      for j := 1 to NbEquipes - i do
        if cells[7, j] < cells[7, j + 1] then Permuter(j, j + 1);

end;

merci de m'aider.


tony


Re : tri a bulle dans un stringGrid le 25/04/2006 18:42:06

florenth
Membre Club
Au lieu de mettre
 if cells[7, j] < cells[7, j + 1] then Permuter(j, j + 1);
il faut que tu compares les valeurs en tant que nombre entier et non en tant que chaînes
C'est à dire :
if StrToInt(cells[7, j]) < StrToInt(cells[7, j + 1]) then Permuter(j, j + 1);

Re : tri a bulle dans un stringGrid le 25/04/2006 18:46:44

florenth
Membre Club
Mais, au lieu d'utiliser le tri à bulle (peu performant) je te conseille d'utiliser l'algorithme QuickSort qui lui, est bien plus rapide.
Tu vas me dire: "oui mais c'est plus dur à mettre en place"
Et je vais te répondre: "pas avec mon impémentation simplifiée de QuickSort". (je fais bien ma pub hein ?)

Va voir ici: Quicksort: Implémentation facile

Tu y trouvera deux exemples d'utilisation et tu verras, c'est très simple.
Si tu as quand même un problème, demande moi de l'aide (sur le forum).

@ Cirec si tu passes ici: sur ce coup, tu as 'perdu' ^^. en effet, avec ta façon d'aborder l'algortihme, tu n'as pas prévu commen faire si quelqu'un veux trier delon la ligne 7 d'un stringgrid !!

Si tu ne te plantes pas ......
tu ne pousseras jamais

Re : tri a bulle dans un stringGrid le 26/04/2006 10:28:31

tony_73

merci a toi. c'était tout bete ms j'y avais pas pensé et sa faiait un petit moment que je cherchais et a la fin sa ma soulé.

Ta methode QuickSort est plus compliqué et comme sa marche comme cela ... ms je garde les sources sous le coude sa peu servir si tu dit que c'est plus rapide d'execution.

Autre chose comment fais tu pour agrandir la fenetre de mon programme selon la longueur de mon stringGrid?

merci

tony


Re : tri a bulle dans un stringGrid le 26/04/2006 11:59:55

florenth
Membre Club
Je te conseille plus de mettre des ScrollBars à ton StringGrid plutot que de redimentionner la fenetre. Parce que pour ceux qui ont de petites résolutions d'écran ou si jamais ton StringGrid est un peu trop large, ça coince ...

StringGrid.ScrollBars := ssBoth; // De toutes façons, c'est activé par défaut

Si tu ne te plantes pas ......
tu ne pousseras jamais

Re : tri a bulle dans un stringGrid le 26/04/2006 14:00:05

cirec
Membre Club
(Admin CS)

@ Florenth,
Cirec si tu passes ici: sur ce coup, tu as 'perdu' ^^. en effet, avec ta façon d'aborder l'algortihme, tu n'as pas prévu commen faire si quelqu'un veux trier delon la ligne 7 d'un stringgrid !!

la tu m'as eu ...

mais en même temps à la base ma version était prévue pour trier les tableaux (dynamique où non) et pour pouvoir les afficher, le tout, simplement (ce qu'elle fait) et c'est à la fin j'ai vu que l'on pouvait aussi lui passer des TStrings.

Alors oui je n'ai pas pensé à trier selon une ligne mais par contre tu peux trier juste une partie (de la ligne 5 à la ligne 15 par Ex.) que ce soit d'un tableau où d'un Memo etc...
Et je pense que ce ne doit pas être trop dur de rajouter cette partie (quoi que j'en vois pas l'intérêt)



@+
Cirec


Re : tri a bulle dans un stringGrid le 26/04/2006 14:07:21

florenth
Membre Club
Et ben, ma fonction, elle s'appelle SortAnything() et elle est faire pour trier anything !!
Non, sérieusement, c'est juste pour te montrer que cela ne sert à rien de vouloir coder un unité qui permettrait de TOUT trier rien qu'en une ligne. Après c'est sur, si tu tries tout le temps des 'array of Integer' ou des 'TStrings', là tu es gagnant.

Bref, on arrete le débat, on en a déjà trop dit ... quoique c'était surement plus interessant de débattre là dessus que de répondre à un petit paumé "comment on enrigistre les lignes d'une Listbox dans un fichier ??" mdr.

PS: ma fonction aussi permet de trier depuis la ligne 5j usqu'a la ligne 15. Je le précise car ta réponse me laissait perplexe la dessus.

@ ++

Si tu ne te plantes pas ......
tu ne pousseras jamais

Re : tri a bulle dans un stringGrid le 26/04/2006 14:38:43

cirec
Membre Club
(Admin CS)
Désolé pour la mise en page
C'est déjà la deuxième fois que ça m'arrive ????

Bref, on arrete le débat, on en a déjà trop dit ... quoique c'était surement plus interessant de débattre là dessus que de répondre à un petit paumé "comment on enrigistre les lignes d'une Listbox dans un fichier ??" mdr.

D'accord avec toi et j'ai vu et c'est trop fort

Mais au passage elle fait plus que que seulement trier des array of Integer où des TStrings
et ce que déteste par dessus tout c'est de devoir réécrir tout le temps de même code ce que j'ai pris en compte chez moi. Donc si tu as besoin d'un nouveau type d'array qui en comporte quand même déjà 27, il suffit de le rajouter et ce une fois pour toute.

Avis aux Admin : La nouvelle fenêtre de selection pur ajouter une image il manque un bouton de sélection où je l'ai pas vu et a la place de l'aperçu il y a un texte dans une langue ???



@+
Cirec


Classé sous : tri, do, stringgrid, cells, bulle

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS