Boucles for imbriquées - C - Programmation
Marsh Posté le 21-09-2009 à 20:15:50
ton raisonnement est bon.
Quand tu sors de la deuxième boucle (j), i est incrémenté de 1, et j retourne à 1 (for j=1; ...), tu affiches donc 1 1, puis 1 2 ...
Ca serait surement plus lisible si tu remplaçait ton printf par :
Code :
|
Marsh Posté le 22-09-2009 à 01:04:31
D'après ton autre post, tu utilises un IDE, il doit sûrement inclure un debugger. Sinon tu devrais facilement pouvoir en trouver un. C'est l'outil idéal pour les questions comme celles là puisque cela te permet de suivre l'exécution de ton programme ligne par ligne en te donnant la possibilité de voir le contenu de toutes tes variables.
N'hésite pas à t'en servir au maximum et à poser des questions si tu as besoin d'un coup de main pour son utilisation.
Marsh Posté le 22-09-2009 à 01:24:22
dj_titeuf a écrit : |
Ben ensuite comme le corps de la première boucle (celle qui fait varier i) s'exécute de nouveau intégralement, tu recommences entièrement la seconde boucle qui repart à son initialisation j=1 et cette seconde boucle se redéroule de nouveau intégralement (comme tu l'as analysée la première fois mais à la différence que i vaut maintenant 1)...
Marsh Posté le 21-09-2009 à 17:02:26
Bonjour,
Voici un code imbriquant deux boucles for:
Après exécution, on se rend compte que le programme affiche 0 1 0 2 1 1 1 2 2 1 2 2.
Seulement, j'aurais bien aimé comprendre comment ça fonctionne, en le faisant pas à pas:
au départ, on part avec i=0 et j=1; la condition dans chacune des boucles est respectée, on affiche donc i et j, soit 0 et 1. Jusque là ça va.
Ensuite, on incrémente j de 1, on passe donc à j=2, condition de boucle toujours respectée, on affiche donc 0 et 2. Cela va toujours.
C'est maintenant que ça bloque.. on incrémente j de 1, j passe donc à 3, et la condition de boucle n'étant plus respectée, on en sort, et on se retrouve avec la première (c'est bien ça?)
i est incrémenté de 1, soit i=1, mais après je ne vois plus comment raisonner, étant sorti de la seconde boucle..
Merci d'avance!