Tri tableau multidimensionnel [Résolu]

coulombemel 6 Messages postés lundi 2 juin 2003Date d'inscription 10 février 2009 Dernière intervention - 13 avril 2007 à 17:16 - Dernière réponse : coulombemel 6 Messages postés lundi 2 juin 2003Date d'inscription 10 février 2009 Dernière intervention
- 13 avril 2007 à 22:01
Bonjour!
Je suis à la recherche d'une méthode simple mais efficace de tri de tableau multidimensionnel ...

J'ai déjà une ébauche de faite ... mais y un bug ... pis j'arrive pas à trouver une solution pour le régler ...
je suis parti d'un exemple en PHP ...

Voici ce que ça donne :

procedure TForm1.TrierTableau();
var lasTableauATrier : Array of array of String;
      lasLigne_Tampon : array of String;
      lasTableau_Tampon : Array of array of String;
      MaxLig, MaxCol, i, j, l, k, m, v, w,liColonneATrier : Integer;
begin
    SetLength(lasTableauATrier, 3, 3);


    lasTableauATrier[0,0] := '1340234';
    lasTableauATrier[0,1] := 'ENC10001';
    lasTableauATrier[0,2] := '2007-04-02';


    lasTableauATrier[1,0] := '1000076';
    lasTableauATrier[1,1] := 'PRO1000001';
    lasTableauATrier[1,2] := '2007-04-03';


    lasTableauATrier[2,0] := '1000032';
    lasTableauATrier[2,1] := 'PRO1000063';
    lasTableauATrier[2,2] := '2007-04-01';


    liColonneATrier := 0;


    { Récupération des deux dimensions du tableau (lignes, colonnes) }
    MaxLig := 3;
    MaxCol := 3;


    SetLength(lasLigne_Tampon, MaxCol);
    SetLength(lasTableau_Tampon, MaxCol, MaxLig);

    For i := 0 to MaxLig -1 do
        For j := 0 to MaxCol -1 do
            DebugTextOut(lasTableauATrier[i, j]);


    i := 0;
    repeat
        { Chaque élément est comparé à celui qui lui est supérieur dans le classement }
        j := 0;
        repeat
           If (lasTableauATrier[j, k] > lasTableauATrier[(j + 1), k]) Then
            begin
                { l'élément J est plus important que l'élément J + 1 alors on les intervertit }
                for l := 0 to MaxCol - 1 do
                begin
                    lasLigne_Tampon[l] := lasTableauATrier[j,l];
                    lasTableau_Tampon[j,l] := lasTableauATrier[(j + 1),l];
                    lasTableau_Tampon[(j + 2), l] := lasLigne_Tampon[l];
                end;


                if (j < MaxLig - 2) then
                    Inc(j);
            end
            else
            begin
                for l := 0 to MaxCol do
                begin
                    lasTableau_Tampon[j,l] := lasTableauATrier[j,l];
                    lasTableau_Tampon[(j + 1),l] := lasTableauATrier[(j+1),l];
                end;


            end;
            //Inc(j);
        until j = (MaxLig -1);
        Inc(i);

        For v := 0 to MaxLig -1 do
            For w := 0 to MaxCol -1 do
    


        //lasTableauATrier := lasTableau_Tampon;
    until i = MaxLig
end;

Mel  qui vous remercie à l'avance
Afficher la suite 

4 réponses

Répondre au sujet
Cirec 4217 Messages postés vendredi 23 juillet 2004Date d'inscription 3 avril 2018 Dernière intervention - 13 avril 2007 à 18:00
+3
Utile
Salut,

Une toute petite recherche avec le moteur du site t'aurait déjà permis de trouver ceci :
http://www.delphifr.com/recherche.aspx?r=trie%2btableau&tr=source

Premier lien : si tu cherches la facilité
Deuxième : si tu cherches plus de flexibilité

à toi de faire ton choix
 
@+
Cirec

<hr size="2" />
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Cirec
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 13 avril 2007 à 19:44
0
Utile
Je revendique et recommande le deuxième ^^








Mais dans ton cas, je te recommande de faire un array of record, puisqu'apparamment, il s'agit plutôt d'enregistrements. De ce fait, tout sera plus simple et tu pourras faire une inversion de deux index en seulement trois lignes de code, au lieu de devoir faire une boucle.

++

   
Commenter la réponse de florenth
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 13 avril 2007 à 21:11
0
Utile
pourquoi ne pas utiliser un TStringList ??!

<hr size="2" width="100%" />Croc (click me)
Commenter la réponse de f0xi
coulombemel 6 Messages postés lundi 2 juin 2003Date d'inscription 10 février 2009 Dernière intervention - 13 avril 2007 à 22:01
0
Utile
J'essaie cela et je vous donnes des nouvelles!!!

merci à tous pour votre aide!

Mel
Commenter la réponse de coulombemel

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.