IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Tri de chiffres décroissant dans un tableau


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 71
    Points : 59
    Points
    59
    Par défaut Tri de chiffres décroissant dans un tableau
    Bonjour,
    J'ai un array avec des chiffres et j'aimerais les trier en ordre
    décroissant dans un grid, je ne sais vraiment pas comment faire ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    var
      FormTableur649: TFormTableur649;
     
      l:real;
      S:String;
      Vdate:array[1..300] of string;
      V1:array[1..300] of String;
      V2:array[1..300] of String;
      V3:array[1..300] of String;
      V4:array[1..300] of String;
      V5: array[1..300] of String;
      V6:array[1..300] of String;
      Vc:array[1..300] of String;
      Hhor:array[1..300] of String;
      sortie:array[1..300] of integer;
      sortiec:array[1..300] of integer;
     
     const
      max=119;
     
     
    implementation
     
    uses loupe;
     
    //uses ImpReacCap;
     
    {$R *.DFM}
     
     
    procedure TFormTableur649.reset;
     
    var
        d:integer;
     
    begin;
      for d:=1 to 49 do  //reset
      sortiec[d]:=0;      //reset
      for d:=1 to 49 do   //reset
      sortie[d]:=0;      //reset
    end;
     
     
     
     
     
    procedure TFormTableur649.FormCreate(Sender: TObject);
     
    var t:longint;
     
    //begin
      // with barseries3 do
      // begin
      // clear;
     //for t:=1 to 49 do add(100+random(30));
       //end;
     
     
    begin
     
     
       {vertical}
       Vdate[1]:='2007-01-03'; V1[1]:='4'; V2[1]:='14';V3[1]:='17'; V4[1]:='20';V5[1]:='38'; V6[1]:='48';Vc[1]:='7';
       Vdate[2]:='2007-01-06'; V1[2]:='19'; V2[2]:='20';V3[2]:='33'; V4[2]:='43';V5[2]:='45'; V6[2]:='47';Vc[2]:='38';
       Vdate[3]:='2007-01-10'; V1[3]:='9'; V2[3]:='16';V3[3]:='19'; V4[3]:='41';V5[3]:='46'; V6[3]:='49';Vc[3]:='4';
       Vdate[4]:='2007-01-13'; V1[4]:='1'; V2[4]:='2';V3[4]:='3'; V4[4]:='19';V5[4]:='25'; V6[4]:='41';Vc[4]:='31';
     
     
    end

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 71
    Points : 59
    Points
    59
    Par défaut pardon je n'ais pas afficher le bon code
    J'ai déja la sortie (sortie[i]) trier de chaque numero sortant de 1 a 49 mais
    elle sont dans un ordre logique. Mais les avoir en ordre décroissant
    je ne connaît pas la procédure.

    pouvez vous m'aider

    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    procedure TformTableur649.tri_normal;
    begin;
     
     
    end;
     
     
    procedure TFormTableur649.calcul_1ans;
      const
      MaxNumber = 49;
    var
      //Counters: array[1..MaxNumber] of Integer;
     
     b2,d,i: Integer;
    begin
      //trie par numero
      reset;
       for i:=(max-104) to max do
      begin
       for b2:=1 to 49 do
      if (strtoint(V1[i])=b2) or (strtoint(V2[i])=b2) or (strtoint(V3[i])=b2) or (strtoint(V4[i])=b2) or (strtoint(V5[i])=b2)or (strtoint(V6[i])=b2)then
       begin
       for d:=1 to 49 do
       begin
       if b2=d then
       sortie[d]:= sortie[d]+1;
       end;
      end;
      end;
     
      with StringGrid2 do   // affichage dans un grid en mode normal de chaque numero de 1 a 49
             begin
             For i:=1 to 49 do
             begin
             Cells[i,0]:=inttostr(i);
             Cells[i,1]:=inttostr(sortie[i]);
             end;
             end;

  3. #3
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var
      V1:array[1..300] of String;
      V2:array[1..300] of String;
      V3:array[1..300] of String;
      V4:array[1..300] of String;
      V5: array[1..300] of String;
      V6:array[1..300] of String;
    mieux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    v:array[1..6,1..300] of string;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      for d:=1 to 49 do  sortiec[d]:=0;  
    //comme c'est un tableau static alors mieux
      fillchar(sortiec,sizeof(sortiec),0);
    //ou ZeroMemory(@sortiec,sizeof(sortiec));
    pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    begin
             For i:=1 to 49 do
             begin
             Cells[i,0]:=inttostr(i);
             Cells[i,1]:=inttostr(sortie[i]);
             end;
             end;
    en décroissant, inverce le send d'ecriture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    begin
             For i:=1 to 49 do
             begin
             Cells[i,0]:=inttostr(i);
             Cells[i,1]:=inttostr(sortie[50-i]);
             end;
             end;

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 71
    Points : 59
    Points
    59
    Par défaut
    Oui ....je me suis peut être mal exprimé
    je veut dire décroissant dans le sens du plus grand au plus petit
    étant donnée que la sortie[i] représente des chiffres de valeur
    différente. exemple sortie[1]=22 sortie[2]=14 sortie[3]=27 ect..
    j'aimerais les avoir sur le tableau en ordre décroissant soit 27, 22 ,14

    Merci de votre aide

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Tu peux effectuer un tri à bulles sur ton tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    type
      TSortType = (stAsc, stDesc);
     
    procedure SortArray(var Tab: array of Integer;
      SortType: TSortType = stAsc);
    var
      I, J, T: Integer;
    begin
      for I := Low(Tab) to High(Tab) - 1 do
        for J := I + 1 to High(Tab) do
          if (Tab[I] > Tab[J]) and (SortType = stAsc) or
            (Tab[I] < Tab[J]) and (SortType = stDesc) then
          begin
            T := Tab[I];
            Tab[I] := Tab[J];
            Tab[J] := T;
          end;
    end;
    Et tu l'appelles comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      SortArray(Sortie, stDesc);  // pour un tri descendant
      // ou 
      SortArray(Sortie, stAsc);   // pour un tri ascendant
      // ou
      SortArray(Sortie);            // Tri ascendant par défaut
    Tu peux jeter également un coup d'oeil sur les sources de Nono ici, qui présentent le tri à bulles et la méthode QuickSort.

    @+ Claudius

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/01/2011, 10h44
  2. Générer une série de chiffres aléatoire dans un tableau
    Par ptitdje dans le forum Général Python
    Réponses: 4
    Dernier message: 10/06/2010, 23h06
  3. Tri par ordre croissant dans variable tableau
    Par jojo86 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 27/11/2009, 16h51
  4. URGENt: recherche dans un tableau trié par ordre alphabetiqu
    Par JulPop dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/02/2005, 17h21
  5. tri alphabétique dans un tableau deux dimensions
    Par *!!cocco!!* dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 06/12/2004, 21h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo