Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/07/2007, 15h32   #1
Membre habitué
 
Avatar de sami_c
 
Inscription : mai 2002
Messages : 633
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 633
Points : 147
Points : 147
Par défaut Trier un tableau à 2 dimensions

Salut,
J'ai trouvé une fonction qui permet de trier un tableau à 2 dimensions :
Code :
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)...
__________________
'...parfois l'informatique peut vous rendre fou...'
sami_c est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 10h55   #2
Membre habitué
 
Avatar de sami_c
 
Inscription : mai 2002
Messages : 633
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 633
Points : 147
Points : 147
aucune réponse ???!!! ASP est-il mort
__________________
'...parfois l'informatique peut vous rendre fou...'
sami_c est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 12h36   #3
Membre habitué
 
Avatar de sami_c
 
Inscription : mai 2002
Messages : 633
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 633
Points : 147
Points : 147
j'ai trouvé une autre fonction que j'ai adapté afin de pouvoir trier un tableau de 8 colonne :
Code :
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 :
If (LeTableau(j, k) > LeTableau((j + 1), k)) Then
en
Code :
If (LeTableau(j, k) < LeTableau((j + 1), k)) Then
la fonctionne déconne !!!
__________________
'...parfois l'informatique peut vous rendre fou...'
sami_c est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 09h27   #4
Membre habitué
 
Avatar de sami_c
 
Inscription : mai 2002
Messages : 633
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 633
Points : 147
Points : 147
MERCI BEAUCOUP
voilà la bonne fonction, ça permet de faire le tri sur un tableau 2D et sur la colonne de votre choix
Code :
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
__________________
'...parfois l'informatique peut vous rendre fou...'
sami_c est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h54.


 
 
 
 
Partenaires

Hébergement Web