woot6768
Messages postés393Date d'inscriptionmercredi 8 mars 2006StatutMembreDernière intervention23 mars 2007
-
7 juin 2006 à 10:20
woot6768
Messages postés393Date d'inscriptionmercredi 8 mars 2006StatutMembreDernière intervention23 mars 2007
-
7 juin 2006 à 14:01
Dans un code que je dois traduire, il y a une ambiguïtée, je ne sais pas comment interprêter cette ligne de code :
For a = i + 1 To x + 1 Step -1
Doi-je comprendre :
for
(a = i + 1 ; a < x + 1 ; i--)
Où :
for
(a = i ; 1 < a < x + 1 ; i--)
?
Je pense savoir quelle est la bonne(je ne le dis pas pour ne pas vous influencer) mais un gros doute persiste.
Merci
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 7 juin 2006 à 11:33
Dans un For, en deuxième position, tu places la condition qui te permet de rester dans la boucle.
a vaut tout d'abord (i+1), et tu décrémentes a jusqu'à atteindre (x+1).
Donc tu restes dans la boucle tant que a>=(x+1)
Dès que tu as la condition a<(x+1), tu sors de la boucle.
Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 7 juin 2006 à 10:36
Salut,
Je ne connaît pas (plus) trop VB, mais je dirais que c'est la première possibilité.
Mais quelque chose me dit que tu penses l'inverse lol
Faut attendre qu'une personne qui connaisse bien VB passe par ici...
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 7 juin 2006 à 11:15
Ni l'un ni l'autre en fait, çà donnerait plutôt ceci :
for (a= i+1; a>=x+1; a--)
a défile de (i+1) à (x+1) inclus, tout en se décrémentant de 1.
Donc à priori, (i+1) > = a >= (x+1)
Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 7 juin 2006 à 11:38
La preuve par l'exemple. Ces deux codes affichent "6" "5" puis "4"
Tu peux tester ceci en C# :
private void test()
{
int i = 5;
int x = 3;
for (int a = (i + 1); a >= (x + 1); a--)
MessageBox.Show(a.ToString());
}
Tu peux tester ceci en VBA (sous Excel par exemple) :
Sub test()
i = 5
x = 3
For a = (i + 1) To (x + 1) Step -1
MsgBox a
Next a
End Sub
Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
woot6768
Messages postés393Date d'inscriptionmercredi 8 mars 2006StatutMembreDernière intervention23 mars 2007 7 juin 2006 à 11:45
Effectivement vous avez raison. Mais alors je ne comprend pas ce que fait mon traducteur.
Aller sur ce lien : http://www.ellkay.com/ConvertVB2Csharp_demo.htm, pui entrer ceci :"For a = (i + 1) To (x + 1) Step -1" dans le champs text.
Et il traduit en ceci :
for(a=(i+1);a<=(x+1);a--)
!?
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 7 juin 2006 à 13:20
Exact, le site renvoit n'importe quoi.
D'ailleurs, si tu exécutes la conversion qu'ils proposent, tu vois bien
que çà ne fonctionne pas. Il faut un signe > au lieu de <
Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.