Comment trier une liste de chaîne a partir d'une position...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Comment trier une liste de chaîne a partir d'une position...

Message par Lord Nelson »

Salut, comment je peut faire pour trier une liste de chaîne a partir d'une position précise de longueur précise ?
J'ai pas exemple ceci dans ma liste:
1 >>> 3909783
2 >>> 3909785
3 >>> 4416870
1 >>> 5481115
1 >>> 4416873
2 >>> 5481117
2 >>> 4416875
2 >>> 4416876
2 >>> 4416877
4 >>> 4416878
3 >>> 4416879
11 >>> 5527880
4 >>> 5527881
2 >>> 5527882
1 >>> 5527883
3 >>> 2109241
6 >>> 2109242
94 >>> 2109243
1 >>> 2109244
2 >>> 2109245
1 >>> 2109246
9 >>> 2109247
1 >>> 2109248
2 >>> 5397864
1 >>> 13224359
1 >>> 1135697
3 >>> 7047830
2 >>> 7047831
1 >>> 7047833
1 >>> 7047838
1 >>> 1160102
2 >>> 7902050
1 >>> 7902052
1 >>> 7902053
3 >>> 10134100
10 >>> 10134101
2 >>> 10134103
2 >>> 10134105
1 >>> 5936030
1 >>> 5936036
2 >>> 5936037
1 >>> 7058092
3 >>> 7058093
2 >>> 7058094
1 >>> 8821930
1 >>> 2187862
2 >>> 8821931
Je voudrait trier les éléments du plus petit au plus grand ou inversement en ne prenant en compte que les nombre avant ">>>"
Comment je peux faire ça svp ? :)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Comment trier une liste de chaîne a partir d'une positio

Message par falsam »

Lord Nelson a écrit :comment je peut faire pour trier une liste de chaîne
Avec une structure :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Comment trier une liste de chaîne a partir d'une positio

Message par Lord Nelson »

Ah intéressant ça, merci Falsam :)
C'est bon j'ai vue l'aide, je vais pouvoir me débrouiller !
Encore merci !
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Comment trier une liste de chaîne a partir d'une positio

Message par falsam »

Un bout de code au cas ou

Code : Tout sélectionner

Structure sData
  Var1.i ;Contient ce qui se trouve à gauche de >>>
  Var2.i ;Contient ce qui se trouve à droite de >>>
EndStructure

NewList Liste.SData()

;Ne sachant pas quel est le support de tes données
;Je crée un jeu de données que je strocke dans un array qui me servira de support
Procedure Split(Array Array.s(1), String.s, Delimiter.s)
  Protected File, i, j, Buffer.s
      
  j = CountString(String, Delimiter)  
  ReDim Array(j)
  For i=1 To j+1  
    Array(i-1) = StringField(String, i, Delimiter)
  Next
EndProcedure

Dim Buffer.s(0)
Split(Buffer(), "1 >>> 3909783,2 >>> 3909785,3 >>> 4416870,1 >>> 5481115,1 >>> 4416873,2 >>> 5481117,2 >>> 4416875,2 >>> 4416876,2 >>> 4416877,4 >>> 4416878,3 >>> 4416879,11 >>> 5527880", ",")

;C'est maintenant que ça commence : On place ces données dans une structure
For n=0 To ArraySize(Buffer())
  AddElement(Liste())
  Liste()\Var1 = Val(Trim(StringField(Buffer(n),1,">>>")))
  Liste()\Var2 = Val(Trim(StringField(Buffer(n),2,">>>")))
Next

;Vérification avant le tri
Debug ("# Liste avant le tri") 
ForEach Liste()
  Debug Str(Liste()\Var1) + " >>> " + Str(Liste()\Var2)
Next

;Effectuons le tri
SortStructuredList(Liste(), #PB_Sort_Ascending|#PB_Sort_NoCase, OffsetOf(Sdata\Var1), #PB_Integer)

;Vérification après le tri
Debug ("# Liste aprés le tri") 
ForEach Liste()
  Debug Str(Liste()\Var1) + " >>> " + Str(Liste()\Var2)
Next
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: Comment trier une liste de chaîne a partir d'une positio

Message par Lord Nelson »

Super merci Falsam :D
Répondre