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

ASP Discussion :

Trier un tableau à 2 dimensions


Sujet :

ASP

  1. #1
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 758
    Points : 407
    Points
    407
    Par défaut Trier un tableau à 2 dimensions
    Salut,
    J'ai trouvé une fonction qui permet de trier un tableau à 2 dimensions :
    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
    Function TriTableau2 (LeTableau,k)
    	Dim Ligne_Tampon
    	Dim Tableau_Tampon
    	' récupération des deux dimensions du tableau (lignes, colonnes)
    	MaxLig = UBound(LeTableau,1)
    	MaxCol = UBound(LeTableau,2)
    	i = 0
    	ReDim Ligne_Tampon(MaxCol)
    	ReDim Tableau_Tampon(MaxLig, MaxCol)
    	Do until i = MaxLig
    		' Chaque élément est comparé à celui qui lui est supérieur dans le classement
    		j=0
    		Do until j = MaxLig -1
    			If (LeTableau(j, k) < LeTableau((j + 1), k)) Then ' fair > pour un tri croissant
    				' l'élément J est plus important que l'élément J + 1 alors on les intervertit
    				for l = 0 to MaxCol
    					Ligne_Tampon(l) = LeTableau(j,l)
    					Tableau_Tampon(j,l) = LeTableau((j + 1),l)
    					Tableau_Tampon((j + 1),l) = Ligne_Tampon(l)
    				next
    				if j < MaxLig - 2 then
    					j=j+1
    				end if
    				Else
    				for l = 0 to MaxCol
    					Tableau_Tampon(j,l) = LeTableau(j,l)
    					Tableau_Tampon((j + 1),l) = LeTableau((j+1),l)
    				next
    			End If
    			j=j+1
    		Loop
    		i=i+1
    		LeTableau = Tableau_Tampon
    	Loop
    	TriTableau2 = Tableau_Tampon
    End Function
    Le problème c'est qu'il y a un pb quand le nombre de lignes est impair : dans le tableau final, on ne retrouve plus la dernière ligne !! par exp, si le tableau contenait une ligne, après tri on n'a plus rien, si on a 2 ligne, le résultat est bon, 3 lignes : on n'a que 2 lignes triées (l'autre disparait)...

  2. #2
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 758
    Points : 407
    Points
    407
    Par défaut
    aucune réponse ???!!! ASP est-il mort

  3. #3
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 758
    Points : 407
    Points
    407
    Par défaut
    j'ai trouvé une autre fonction que j'ai adapté afin de pouvoir trier un tableau de 8 colonne :
    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
    Function TriTableau (LeTableau, k)
    	' Permet renvoyer un tableau Trié issu du tableau transmis en paramêtre (N lignes, nb_col colonnes) et avec le N° de la colonne à trier k
    	nb_col = 8
    	Dim Ligne_Tampon (8)
    	Dim Tableau_Tampon
    	Max = Ubound(LeTableau)
    	ReDim Tableau_Tampon(Max, nb_col)
    	i = 0
    	Do until i = Max
    		' Chaque élément est comparé à celui qui lui est supérieur dans le classement
    		j=0
    		Do until j = Max - 1
    			If (LeTableau(j, k) > LeTableau((j + 1), k)) Then
    				' l'élément J est plus important que l'élément J + 1 alors on les intervertit
    				for l=0 to nb_col
    					Ligne_Tampon(l) = LeTableau(j,l)
    				next
    				for l=0 to nb_col
    					Tableau_Tampon(j,l) = LeTableau((j + 1),l)
    				next
    				for l=0 to nb_col
    					Tableau_Tampon((j + 1),l) = Ligne_Tampon(l)
    				next
    			Else
    				for l=0 to nb_col
    					Tableau_Tampon(j,l) = LeTableau(j,l)
    				next
    				for l=0 to nb_col
    					Tableau_Tampon((j + 1),l) = LeTableau((j+1),l)
    				next
    			End If
    			j=j+1
    		loop
    		i=i+1
    	loop
    	TriTableau = Tableau_Tampon
    End Function
    cette fonction fait un tri croissant; cependant je cherche à faire un tri décroissant, quand je modifie la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (LeTableau(j, k) > LeTableau((j + 1), k)) Then
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (LeTableau(j, k) < LeTableau((j + 1), k)) Then
    la fonctionne déconne !!!

  4. #4
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 758
    Points : 407
    Points
    407
    Par défaut
    MERCI BEAUCOUP
    voilà la bonne fonction, ça permet de faire le tri sur un tableau 2D et sur la colonne de votre choix
    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
    	Function TrierTableau (LeTableau, k)
    		' TRI PAR INSERTION
    		' Permet renvoyer un tableau Trié issu du tableau transmis en paramêtre (N lignes, nb_col colonnes) 
    		' le tri se fait sur la colonne K
    		nb_col = 8 'nbr de colonne du tableau
    		Dim posmin 'position du min
    		dim temp 'car auxiliaure
    		Max = Ubound(LeTableau) ' nbr de ligne du tableau
    		posmin = 0
    		i = 0
    		Do until i = Max
    			posmin = i
    			j=i+1
    			Do until j = Max 
    				If (LeTableau(j, k) > LeTableau(posmin, k)) Then ' Tri DECROISSANT car '>'
    					posmin = j
    				end if
    				j = j+1
    			loop
    			' on a trouvé le max, on permute
    			for l=0 to nb_col
    				temp = LeTableau(posmin, l)
    				LeTableau(posmin, l) = LeTableau(i, l)
    				LeTableau(i, l) = temp
    			next
    			i=i+1
    		loop
    		TrierTableau = LeTableau 'Tableau_Tampon
    	End Function

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

Discussions similaires

  1. Comment trier un tableau 2 dimensions ?
    Par Killian1227 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 16/02/2009, 17h14
  2. Trier un tableau à deux dimensions
    Par ghost emperor dans le forum VB.NET
    Réponses: 4
    Dernier message: 24/04/2008, 16h51
  3. comment trier un tableau à n dimensions ?
    Par JoseF dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/04/2008, 10h37
  4. Réponses: 1
    Dernier message: 11/02/2008, 17h45
  5. [Prototype] Trier un tableau à deux dimensions par colonnes
    Par G.D.V.L. dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 12/06/2007, 13h20

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