FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
SORT sur une LIST Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
SORT sur une LIST Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
SORT sur une LIST Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
SORT sur une LIST Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
SORT sur une LIST Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
SORT sur une LIST Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
SORT sur une LIST Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
SORT sur une LIST Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
SORT sur une LIST Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
SORT sur une LIST Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
SORT sur une LIST Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
SORT sur une LIST Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
SORT sur une LIST Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
SORT sur une LIST Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
SORT sur une LIST Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -28%
-28% Machine à café avec broyeur ...
Voir le deal
229.99 €

 

 SORT sur une LIST

Aller en bas 
2 participants
AuteurMessage
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

SORT sur une LIST Empty
MessageSujet: SORT sur une LIST   SORT sur une LIST EmptySam 23 Nov 2013 - 1:27

Salut tout le monde.
Je dispose d’une LIST dont les ITEMs sont les valeurs d’un tableau d’entiers aléatoires.
Comment utilise-t-on la commande SORT pour trier cette LIST ?
Et surtout où doit-on mettre cette commande ?
J’ai beau inséré les commandes SORT_ON … SORT … SORT_OFF avant, pendant et après la construction de la LIST, mais je n’arrive pas à avoir ma LIST triée !

Code:
dim n : n = 50
dim tableau(n)
height 0, 800
list 10 : width 10,100 : height 10,700 : left 10,40 : top 10,50
Charger_Tableau()
end

rem ============================================================================
' Charger un tableau d'entiers aléatoires (entre 0 et 999)
SUB Charger_Tableau()
    dim_local i
    for i = 1 to n
        tableau(i) = int(rnd(1000))
        item_add 10, tableau(i)
    next i
END_SUB
rem ============================================================================
Je m’en suis sorti en écrivant une SUB de tri.

Code:
dim n : n = 50
dim tableau(n)

height 0, 800
alpha 1 : top 1,20 : left 1, 50 : caption 1,"Liste non triée"
alpha 2 : top 2,20 : left 2,260 : caption 2,"Liste triée"
list 10 : width 10,100 : height 10,700 : left 10,40 : top 10,50
list 20 : width 20,100 : height 20,700 : left 20,250: top 20,50

 Charger_Tableau()
 Tri_Shell_Metzner()
end
rem ============================================================================
' Charger une table d'entiers aléatoires (entre 0 et 999)
SUB Charger_Tableau()
    dim_local i
    for i = 1 to n
        tableau(i) = int(rnd(1000))
        item_add 10,tableau(i)
    next i
END_SUB
rem ============================================================================
' Algorithme de tri rapide de Shell-Metzner
SUB Tri_Shell_Metzner()
    dim_local ecart, i, j, permut, true, false, temp
    ecart = int(n/2) : true = 1 : false = 0
    while ecart <> 0
       for i = 1 to n - ecart
           j = i : permut = true
           while j > 0 and permut = true
              permut = false
              if tableau(j) > tableau(j + ecart)
' on permute tableau(j) et tableau(j+ecart)
                 temp =  tableau(j)
                 tableau(j) = tableau(j+ecart) : tableau(j+ecart) = temp
                 permut = true
                 j = j - ecart
              end_if
           end_while
       next i
       ecart = int(ecart/2)
    end_while
' Afficher le tableau triée
    for i = 1 to n
       item_add 20, tableau(i)
    next i
END_SUB
rem ============================================================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

SORT sur une LIST Empty
MessageSujet: Re: SORT sur une LIST   SORT sur une LIST EmptySam 23 Nov 2013 - 2:10

Tu fais comme ceci:
Code:
dim n : n = 50
dim tableau(n)
height 0, 800
list 10 : width 10,100 : height 10,700 : left 10,40 : top 10,50
sort_on 10  : ' <==================
Charger_Tableau()
end

rem ============================================================================
' Charger un tableau d'entiers aléatoires (entre 0 et 999)
SUB Charger_Tableau()
    dim_local i
    for i = 1 to n
        tableau(i) = int(rnd(1000))
        item_add 10, right$("00"+str$(tableau(i)),3)  : ' <==========
    next i
END_SUB
rem ============================================================================
Tu y étais presque...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

SORT sur une LIST Empty
MessageSujet: Re: SORT sur une LIST   SORT sur une LIST EmptySam 23 Nov 2013 - 2:48

Merci Klaus.
ça marche aussi avec SORT 10 à l’intérieur de la SUB, avant ou après NEXT i et ça marche aussi après l’appel de la SUB, mais pas avant !

Je récapitule : on utilise SORT_ON 10 avant l’appel de la SUB, ou bien on fait SORT 10 après ITEM_ADD 10 … que ce soit à l’intérieur ou à l’extérieur de la boucle FOR … NEXT ou même après l'appel de la SUB.
Et dans tous les cas, on doit transformer le texte de l’ITEM en chaîne de caractères.  (c’est ce que je n’avais pas soupçonné !)

Une fois encore, merci Klaus.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

SORT sur une LIST Empty
MessageSujet: Re: SORT sur une LIST   SORT sur une LIST EmptySam 23 Nov 2013 - 10:59

Quelques précisions sur SORT:

1. SORT_ON ne fait aucun tril. Cette commande place somplement l'objet (LIST, DLIST) dans un mode où Windows fait automatiquement les ajouts ultérieurs (insertions ou ajouts en fin de liste) de façon triée.

2. SORT_OFF désactive ce mode trié, sans toucher à l'ordre actuel des lignes. Tout ajout (insertion ou ajout en fin de liste) se fait directement, sans changement d'ordre)

3. La commande SORT peut être donnée à n'importe quel moment, que l'objet soit en mode trié ou non. Toutes les lignes seront triées, mais si l'objet est en mode non trié, les ajouts ultérieurs pourront perturber l'ordre qui ne sera pas maintenu.

Conséquence:
Si une liste doit être maintenue en mode triée, il est largement préférable de faire SORT_ON au début, puis d'utiliser uniquement ITEM_ADD pour les ajouts. L'ordre trié sera mainteni en permanence, et ce pour un surcoût en temps minimal. Faire la commande SORT à l'intérieur d'une boucle, c'est extrêmement coûteux en termes de performance. C'est à la limite acceptable pour de petites listes, mais la perte de performance deviendra vite prohibitive lorsque la liste grandit. Ceci est par exemple invivable avec une liste des codes postaux...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

SORT sur une LIST Empty
MessageSujet: Re: SORT sur une LIST   SORT sur une LIST EmptySam 23 Nov 2013 - 12:29

Merci Klaus pour ces éclaircissements.

Il faut ajouter qu’il est impératif de formater les valeurs si elles sont de type numérique, (c.à.d.  les compléter par des zéros au début) car le tri se fait sur la valeur ASCII du 1er caractère, puis le second, etc.
La chaîne la plus courte sera complétée par des espaces, ce qui a comme effet "324"  <  "52 " !
Pour retrouver un tri comme on peut s’y attendre, on doit modifier dans l’exemple précédent « 52 » par « 052 ». On obtient alors "052" < "324".
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

SORT sur une LIST Empty
MessageSujet: Re: SORT sur une LIST   SORT sur une LIST EmptySam 23 Nov 2013 - 17:58

Exact. D'où l'expression, dans mon code: right$("00"+str$(tableau(i)),3) pour obtenir une valeur normalisée sur 3 caractères...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





SORT sur une LIST Empty
MessageSujet: Re: SORT sur une LIST   SORT sur une LIST Empty

Revenir en haut Aller en bas
 
SORT sur une LIST
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» objet list
» probleme avec SORT
» Initialiser la fonction Rnd() ?
» Ordre de tri des LIST...
» Objet LIST

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: