Problème d'incrémentation dans une boucle

brigitte666 Messages postés 9 Date d'inscription jeudi 15 mars 2012 Statut Membre Dernière intervention 7 juin 2012 - 26 mars 2012 à 10:53
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 26 mars 2012 à 14:16
Bonjour à tous!

Une petite question qui parait bête mais qui me pose de gros soucis..

For i = 0 To 2
Next

Je demande à mon indice i de varier de 0 à 2, et pourtant quand je lance le programme en pas à pas et que j'espionne la variable i, je m'aperçois qu'en sortie de boucle elle vaut 3!

C'est assez problématique car j'aimerais travailler avec la valeur de i après dans des tableaux, et ça fait planter mon programme si i vaut 3 (problèmes d'index)

Quelqu'un a-t-il une idée?

Merci!

11 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
26 mars 2012 à 11:06
Salut

normal
pour chaque itération i est incrimenté de 1
quand i = 2 le code du for i est executé
i est incrimenté donc i = 3
comme 3 est supérieur à la limite (2)
donc tu obtiens i = 3 à la sortie du for

C'est assez problématique car j'aimerais travailler avec la valeur de i après dans des tableaux, et ça fait planter mon programme si i vaut 3 (problèmes d'index)


que veux tu faire avec le i
expliques toi
0
brigitte666 Messages postés 9 Date d'inscription jeudi 15 mars 2012 Statut Membre Dernière intervention 7 juin 2012
26 mars 2012 à 11:41
Bonjour ShayW

Je comprends bien, mais je recherche une solution pour éviter ce problème.
En fait, je veux retrouver le "start" dans un tableau à deux dimensions, et en connaitre les indices i et j. Voici ce que j'ai proposé:

For i = 0 To 2
For j = 0 To 2
If ligne(i, j) = start Then
Exit For
End If
Next
If ligne(i, j) = start Then
depart(0) = i
depart(1) = j
Exit For
End If
Next
0
brigitte666 Messages postés 9 Date d'inscription jeudi 15 mars 2012 Statut Membre Dernière intervention 7 juin 2012
26 mars 2012 à 11:42
plus clair avec le code :

For i = 0 To 2
            For j = 0 To 2
                If ligne(i, j) = firstClicked.Text Then
                    Exit For
                End If
            Next
            If ligne(i, j) = firstClicked.Text Then
                depart(0) = i
                depart(1) = j
                Exit For
            End If
        Next
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 mars 2012 à 11:55
Bonjour,

Je ne comprends pas trop l'utilité de ta démarche, mais alors :
For i = 0 To 2
            For j = 0 To 2
                If ligne(i, j) = firstClicked.Text Then
                    i = i + 1 : Exit For
                End If
            Next
            If ligne(i, j) = firstClicked.Text Then
                depart(0) = i
                depart(1) = j
                Exit For
            End If
        Next
    i = i -1
msgbox i

devrait faire ton affaire !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
brigitte666 Messages postés 9 Date d'inscription jeudi 15 mars 2012 Statut Membre Dernière intervention 7 juin 2012
26 mars 2012 à 11:55
Je précise que le tableau ligne est déclaré comme ceci:
Public ligne(,) As String = {{"A", "B", "C", "D", "E"}, {"F", "G", "C", "H", "I"}, {"J", "K", "C", "L", "M"}}
0
brigitte666 Messages postés 9 Date d'inscription jeudi 15 mars 2012 Statut Membre Dernière intervention 7 juin 2012
26 mars 2012 à 12:07
Eh bien le tableau ligne est déclaré comme une constante, déjà rempli. L'utilisateur clique sur un bouton. Le programme doit trouver les indices i et j dans le tableau "ligne" qui correspondent au bouton. Je ne crois pas vraiment que ce que tu as proposé permette de faire ça, ou je me trompe peut-être..
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
26 mars 2012 à 12:46
doit trouver les indices i et j dans le tableau "ligne" qui correspondent au bouton.


quel rapport entre le bouton window.for.control
et i j variables
si tu veux une réponse explique toi
0
brigitte666 Messages postés 9 Date d'inscription jeudi 15 mars 2012 Statut Membre Dernière intervention 7 juin 2012
26 mars 2012 à 13:07
Imagine que tu as par exemple 5 boutons ayant pour text "Bouton 1", "Bouton 2", "Bouton 3", "Bouton 4" et "Bouton 5".

On déclare un tableau à deux dimensions :
Public TABLEAU(,) As String = {{"Bouton 1","Bouton 3","Bouton 5"},{"Bouton 2","Bouton 3","Bouton 4"}}


Puis, on enregistre dans une variable firstClicked de sur quel bouton l'utilisateur a cliqué:
Private Sub cmd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1,btn2,btn3,btn4,btn5

        Dim clickedButton As Button = TryCast(sender, Button)




Ensuite, on veut retrouver dans quelle ligne et quelle colonne du TABLEAU se trouve le texte de firstClicked.

Exemple:
L'utilisateur clique sur le bouton 1
La variable firstClicked est désormais btn1.
Le programme doit me sortir que le texte correspondant dans le TABLEAU se trouve à la ligne 0, colonne 0.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
26 mars 2012 à 13:53
c'est un peu bizarre de se servir des boutons
bon
donc selon ton ex tu dois avoir
15 boutons
0 4
5 9
10 14

pour le premier bouton firstClicked = 0 ou 1 ?
mieux vaut assigner à firstclicked 0 pour le
premier bouton 1 pour le second

ce qui donne
i = firstclicked \ 5
j = firstclicked mod 5

ex le 13 bouton
firstclicked = 12
i 12\5 -> i 2
j 12 mod 5 -> j 2
ligne(2,2) ce qui donne C
0
brigitte666 Messages postés 9 Date d'inscription jeudi 15 mars 2012 Statut Membre Dernière intervention 7 juin 2012
26 mars 2012 à 14:03
Je pense que tu n'as pas compris le problème, mais merci quand même.
Y a-t-il quelqu'un d'autre qui pourrait m'aider?
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
26 mars 2012 à 14:16
alors expliques de façon qu'on peut comprendre
ou tu n'a pas compris ma réponse
0
Rejoignez-nous