Page 1 sur 1

Incrementation & Decrementation dans la meme boucle

Publié : jeu. 04/mars/2010 17:02
par Ganagyre
Bonjour.

J'ai ces 2 boucles pour Incrémenter et Décrémenter .

Code : Tout sélectionner

a.l:b.l
y.l:y.l
max.l = 100
;
; INCREMENTATION 1-2 // 99-100
;
For x = 1 To max - 1
  For y = x+1 To max
    Debug " Boucle Incrementation =  "+Str(x)+"  "+Str(y)   
  Next y
Next x
;
Debug"====================================="
Debug"====================================="
;
; DECREMENTATION_OKI 99-100 à 1-2
;
For a = max-1 To 1 Step -1  
  For b = max To a+1 Step-1    
    Debug " Boucle Décrémentation =  "+Str(a)+"  "+Str(b)     
  Next b     
Next a
Comment réduire ou transformer les boucles, pour obtenir les résultats d'incrémentation et décrémentation se suivant.

Code : Tout sélectionner

;
 Debug " Boucle Incrementation = "+Str(x)+"  "+Str(y) 
 Debug " Boucle Decrementation = "+Str(a)+"  "+Str(b) 
;

Voila, merci de toute astuce.

Re: Incrementation & Decrementation dans la meme boucle

Publié : jeu. 04/mars/2010 17:28
par cederavic
Je ne suis pas sur d'avoir compris ce que tu voulais mais... ?

Code : Tout sélectionner

a.l:b.l
y.l:y.l
max.l = 10
;
; INCREMENTATION 1-2 // 99-100
;
For x = 1 To max - 1
  For y = x+1 To max
       
    a = max - x
    b = max - y
    
    Debug " Boucle Incrementation =  "+Str(x)+"  "+Str(y)
    Debug " Boucle Décrémentation =  "+Str(a)+"  "+Str(b) 
  Next y
Next x

Re: Incrementation & Decrementation dans la meme boucle

Publié : ven. 05/mars/2010 12:05
par Ganagyre
Merci cederavic pour le code.

Je cherche bien à faire en "un passage" une incrémentation et décrémentation, sur le premier code aucun problème en 2 boucles.
Il est plus délicat que je ne pensais de le faire en un "seul passage".
Cela décrémente bien, mais pas dans bon ordonement.
On devrait trouver dans la décrémentation pour un max = 10 :
9-10
8-10
8-9
7-10
7-9
7-8

Un réglage à affiner pour décrémenter, la c'est presque bon...

Code : Tout sélectionner

a.l:b.l
y.l:y.l
max.l = 10
c.l:d.l
c=max+1
d=max+1
;
; INCREMENTATION 1-2 // 99-100
;
For x = 1 To max - 1
  For y = x+1 To max
       
    a = max - x
    b = max - y
   
    Debug " Boucle Incrementation__ =  "+Str(x)+"  "+Str(y)     ; origine
    Debug " Boucle Décrémentation 1 =  "+Str(a)+"  "+Str(b)     ; cederavic
    Debug " Boucle Décrémentation 2 =  "+Str(c-y)+"  "+Str(d-x) ; 
    Debug "=========================="
    
  Next y
Next x
+

Re: Incrementation & Decrementation dans la meme boucle

Publié : ven. 05/mars/2010 12:42
par kernadec
bonjour
ta boucle part de 1
donc c'est le zéro qui te gêne dans la décrémentation peut être..

Cordialement

Code : Tout sélectionner

a.l:b.l
y.l:y.l
max.l = 10
c.l:d.l
c=max+1
d=max+1
;
; INCREMENTATION 1-2 // 99-100
;
For x = 1 To max - 1
	For y = x+1 To max
				
		a = max+1 - x
		b = max+1 - y
		
		Debug " Boucle Incrementation__ =  "+Str(x)+"  "+Str(y)     ; origine
		Debug " Boucle Décrémentation 1 =  "+Str(a)+"  "+Str(b)     ; cederavic
		Debug " Boucle Décrémentation 2 =  "+Str(c-y)+"  "+Str(d-x) ; 
		Debug "=========================="
		
	Next y
Next x



Re: Incrementation & Decrementation dans la meme boucle

Publié : ven. 05/mars/2010 13:06
par cederavic
Je ne suis toujours pas sur d'avoir compris... Peut-tu ecrire la liste inc et dec a la main de 0 à 5 stp?

D'apres ce que tu m'a donner :

Code : Tout sélectionner

max = 10
For it = 1 To max * max - max
  
  ix = (it / max) 
  iy = (it % max)
  
  If iy = max - 1
    it + ix + 2
  EndIf
  
  x = ix + 1
  y = iy + 1
  
  Debug " Boucle Incrementation   =  "+Str(x)+"  "+Str(y)
  
  dx = max - iy
  dy = max - ix
  
  
  Debug " Boucle Décrémentation 1 =  "+Str(dx)+"  "+Str(dy)
  
Next

Re: Incrementation & Decrementation dans la meme boucle

Publié : ven. 05/mars/2010 14:54
par Ganagyre
Merci cederavic et kernadec de votre aide.

En prenant comme référence le premier code (en 2 boucles distinctes), en ayant 5 comme valeur max, on obtient pour l'incrémentation une boucle qui "tourne 10 fois" donnant :
INC
1-2
1-3
1-4
1-5
2-3
2-4
2-5
3-4
3-5
4-5

Pour la décrémentation on obtient (10 passages):
DEC
4-5
3-5
3-4
2-5
2-4
2-3
1-5
1-4
1-3
1-2

A noter que l'on ne passe jamais par 0, pour INC ou DEC.
La difficulté réside à rester dans le meme ordre pour INC comme pour DEC.

Le Résultat devrait donner (avec max = 5):

01_INC=1-2__DEC=4-5
02_INC=1-3__DEC=3-5
03_INC=1-4__DEC=3-4
04_INC=1-5__DEC=2-5
05_INC=2-3__DEC=2-4
06_INC=2-4__DEC=2-3
07_INC=2-5__DEC=1-5
08_INC=3-4__DEC=1-4
09_INC=3-5__DEC=1-3
10_INC=4-5__DEC=1-2

Re: Incrementation & Decrementation dans la meme boucle

Publié : ven. 05/mars/2010 17:12
par kernadec
@ Ganagyre excuse moi, pour le code précèdent :oops: j'ai repris ce que tu avais mis.

regarde celui la, ll ressemble à ce que tu demande.

je viens de voir à l'instant le post suivant de Dobro. excellent
Cordialement

Code : Tout sélectionner

For x=1 To 9
 For y=x+1 To 9
 
 Debug Str(x)+"-"+Str(y)+"        "+Str(10-x)+"-"+Str(10-y)

Next y 
Next x

Re: Incrementation & Decrementation dans la meme boucle

Publié : ven. 05/mars/2010 17:12
par Backup
bah ! facile :)

Code : Tout sélectionner

max=5
NewList tableau.s()
NewList tableau2.s()

For ext=1 To max-1
    For int1=ext+1 To max
        compteur=compteur+1 
        AddElement(tableau())
        tableau()= Str(ext)+"-"+Str(int1) 
          AddElement(tableau2())
        tableau2()= Str(ext)+"-"+Str(int1) 
    Next int1
Next ext

; affiche résultat


ResetList(tableau())
LastElement(tableau2())
compteur=0
While NextElement(tableau())
    compteur=compteur+1 
    Debug Str(compteur)+"_INC="+tableau()+"_DEC="+tableau2()
    PreviousElement(tableau2())
Wend



et voila :D
1_INC=1-2_DEC=4-5
2_INC=1-3_DEC=3-5
3_INC=1-4_DEC=3-4
4_INC=1-5_DEC=2-5
5_INC=2-3_DEC=2-4
6_INC=2-4_DEC=2-3
7_INC=2-5_DEC=1-5
8_INC=3-4_DEC=1-4
9_INC=3-5_DEC=1-3
10_INC=4-5_DEC=1-2

Re: Incrementation & Decrementation dans la meme boucle

Publié : ven. 05/mars/2010 18:00
par cederavic
Okkkkk j'ai pigé! Et ça va beaucoup mieux maintenant que j'ai compris :P

Code : Tout sélectionner

max = 5
xINC = 1
yINC = 1
it = 0
itMax = 1
For a = 1 To (max * (max - 1)) / 2
 
  ; INC
  yINC + 1
  If yINC = max + 1
    xINC + 1
    yINC = xINC + 1
  EndIf
  
  ; DEC
  it + 1
  If it > itMax
    it = 1
    itMax + 1
  EndIf
  xDEC = max - itMax
  yDEC = max - it + 1
  
  Debug RSet(Str(a), 2, "0") + "_INC="+Str(xINC)+"-"+Str(yINC)+"__DEC="+Str(xDEC)+"-"+Str(yDEC)

Next

Re: Incrementation & Decrementation dans la meme boucle

Publié : ven. 05/mars/2010 20:27
par kernadec
bonjour Cederavic
merci pour ce code je le met de coté, car ça m'as pris la tête ce truc ..
et je commençais à tourner en rond....

Cordialement

Re: Incrementation & Decrementation dans la meme boucle

Publié : ven. 05/mars/2010 20:33
par Backup
ce qui est marrant c'est de voir que pour résoudre un probleme
chacun a son propre cheminement :)

Re: Incrementation & Decrementation dans la meme boucle

Publié : sam. 06/mars/2010 8:18
par Ganagyre
Bonjour.

Grand merci cederavic, Dobro , kernadec pour votre aide et vos solutions.

+

Re: Incrementation & Decrementation dans la meme boucle

Publié : sam. 06/mars/2010 20:44
par Geo Trouvpatou
Salut.

C'est là que je me dis que le "EnableExplicit" à son intérêt, parce qu'au bout d'un moment on s'aperçoit de l'erreur de la ligne 2

Code : Tout sélectionner

y.l:y.l
Ici ça n'a pas d'importance, mais c'est une bonne habitude à prendre.

Bye.