Aller au contenu

trier


sail

Messages recommandés

bonjour

 

Dans mon dessin j'ai un bloc inséré x fois . il posséde un attribut que je veux incrementer automatiquement . Pour cela je selectionne tous les blocs (par un jeu de selection)qui m'intéresse et je lance ma routine mais évidement mon attribut s'incremente dans l'ordre du dernier bloc inseré au premier . He voila le probléme . Je voudrais qu'il s'incrémente selon l'option que je choisi , c'est à dire de gauche à droite et d'en haut en bas (par colonnes et rangées) etc . Pour cela je récupére le point d'insertion du bloc mais aprés il faudrait pouvoir trier les coordonnées en x et y pour que je puisse incrementer mes attributs selon l'option que choisi . si quelqu'un à la solution d'ailleur elle doit éxister merci d'avance .

 

 

Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...

Je pense que la meileure solution consiste à passer tous les blocs de ton dessin, et à stocker dans un array les coordonnées x et y. tu auras donc un array du style :

coord(1 to nbblocs,0 to 1) avec nbblocs le nombre de blocs que tu as

ensuite, le principe c'est de faire deux fois une boucle pour trier les blocs de gauche à droite (coordonnée x croissante) et de haut en bas (coordonnée x décroissante) pour qu'à la fin, ton array contienne les coordonnées des blocs dans l'ordre que tu as spécifié. ca donne qqch de ce genre (j'ai pas VB pour tester ce que je tape) :

 

'on tri d'abord l'array par coordonnée x croissante :

 

for k=0 to 1

if k=0 then

sens=1

else

sens=-1

end if

for i=1 to nbblocs-1

ligne=0

val=coord(i,k)

for j=i+1 to nbblocs

if coord(j,k)*sens

val=coord(j,k)

ligne=j

end if

next j

tempo=coord(ligne,0)

coord(ligne,0)=coord(i,0)

coord(i,0)=tempo

tempo=coord(ligne,1)

coord(ligne,1)=coord(i,1)

coord(i,1)=tempo

next i

next k

 

 

je pense que ce code doit fonctionner, je l'essayerai sur un autre PC si j'ai le temp. La variable sens sert à inverser l'inégalité puisqu'on tri par croissant en x et par décroissant en y.

La variable ligne repère la ligne du minimum

la variable val contient la valeur minimale en cours (ou maximale pour y)

après le next j, on permute la ligne courante et la ligne du min.

 

tient moi au courant...

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité