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
» PANORAMIC V 1
SORT sur une LIST Emptypar jjn4 Hier à 17:49

» select intégrés [résolu]
SORT sur une LIST Emptypar jjn4 Hier à 17:00

» number_mouse_up
SORT sur une LIST Emptypar jjn4 Hier à 11:59

» Aide de PANORAMIC
SORT sur une LIST Emptypar jjn4 Hier à 11:16

» trop de fichiers en cours
SORT sur une LIST Emptypar lepetitmarocain Hier à 10:43

» Je teste PANORAMIC V 1 beta 1
SORT sur une LIST Emptypar papydall Hier à 4:17

» bouton dans autre form que 0
SORT sur une LIST Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
SORT sur une LIST Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
SORT sur une LIST Emptypar Klaus Lun 6 Mai 2024 - 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
SORT sur une LIST Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
SORT sur une LIST Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
SORT sur une LIST Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
SORT sur une LIST Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
SORT sur une LIST Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
SORT sur une LIST Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -29%
PC portable – MEDION 15,6″ FHD Intel i7 ...
Voir le deal
499.99 €

 

 SORT sur une LIST

Aller en bas 
2 participants
AuteurMessage
papydall

papydall


Nombre de messages : 7006
Age : 73
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 : 12294
Age : 74
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 : 7006
Age : 73
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 : 12294
Age : 74
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 : 7006
Age : 73
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 : 12294
Age : 74
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
» Problème avec la commande 'sort'.
» Initialiser la fonction Rnd() ?
» List index out of bounds (927)

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: