Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2751 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Boucles for imbriquées

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Boucles for imbriquées

n°1925599
dj_titeuf
Posté le 21-09-2009 à 17:02:26  profilanswer
 

Bonjour,
 
Voici un code imbriquant deux boucles for:
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.   int i,j;
  6.   for (i=0;i<3;i++){
  7.     for (j=1;j<=2;j++){
  8.       printf("%d %d ", i, j);
  9.     }
  10.   }
  11.   printf("\n" );
  12.   return 0;
  13. }


 
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!

mood
Publicité
Posté le 21-09-2009 à 17:02:26  profilanswer
 

n°1925634
mr simon
Posté le 21-09-2009 à 20:15:50  profilanswer
 

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 :
  1. printf("i=%d j=%d\n",i,j);

n°1925692
ptitchep
Posté le 22-09-2009 à 01:04:31  profilanswer
 

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.


---------------
deluser --remove-home ptitchep
n°1925698
Sve@r
Posté le 22-09-2009 à 01:24:22  profilanswer
 

dj_titeuf a écrit :


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..  


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)...


Message édité par Sve@r le 22-09-2009 à 01:33:59

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Boucles for imbriquées

 

Sujets relatifs
[C] executer plusieurs boucles en meme tempsliste deroulantes imbriquées
fonctions imbriquéesLes boucles en VB
Pb avec boucles imbriquées pour controle d'un formulaireBoucles imbriquées en XSL
[batch DOS] boucles FOR imbriquées[PL/SQL] Curseur et boucles FOR imbriquées [Résolu]
vo mieux voir le dernier msg de ce topic pour comprendre le 1er ??un peu d'aide sur les boucles imbriquées
Plus de sujets relatifs à : Boucles for imbriquées


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR