IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Progression de boucle while


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 216
    Par défaut Progression de boucle while
    Bonjour a toutes et a tous ,
    Je bute sur le cheminement de ce tout petit bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     #include <stdio.h>
     int main(){
     
     int n,p;
     n=p=0;   
     while(n<=8) n += p++;
     printf("B : n= %d\n",n);
     
    return 0;
    }
    Si je décompose j'ai :
    je rentre dans ma boucle n ayant la valeur 0. soit while(n<=8) n=0+0 . J'incremente p .
    rebelote : while(n<=8)n=0+1; (n=1)
    " : while(n<=8)n=1+1; (n=2)
    ..................
    " : while(n<=8)n=7+1; (n=8)(fin de la boucle )
    printf("B : n= %d\n",n); soit n=8

    Pourtant le bon resultat est 10 !
    Mon raisonnement est mauvais , pourquoi ?
    merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Et p, il est incrémenté chaque fois, donc :
    n = 0 + 0, p = 1
    n = 0 + 1, p = 2
    n = 1 + 2, p = 3
    n = 3 + 3, p = 4
    n = 6 + 4, p = 5
    stop car n > 8
    d'où n = 10

  3. #3
    Membre confirmé
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 216
    Par défaut
    Ok bien compris
    Merci

  4. #4
    Membre confirmé
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 216
    Par défaut
    Si je peux me permettre , quelle nuance entre ces 2 expressions :
    n += ++p; et
    n+= ++p;
    Espace entre le n et le + sur la 1ere

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Les espaces n'ont aucune signification particulière, on pourrait aussi bien revenir à la ligne ou ne rien mettre.
    Il existe de très rares cas où une séparation est importante, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    x = a+++b;
    // sans espace correspond à 
    x = a++ + b ; // post-incrémenter a et ajouter b
    // alors que :
    x = a+ ++b; // espace obligatoire après a+ : ajouter a et la pré-incrémentation de b
    // on peut aussi l'écrire :
    x =
    /* la suite */ a   // juste la a sur cette ligne
     +  ++             // tient le plus et le plus-plus sont là (avec l'espace nécessaire)
    b;                 // et pour finir le b que l'on indiqué à pré-incrémenter

  6. #6
    Membre confirmé
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 216
    Par défaut
    Ok parfait . Merci de ton aide .
    Mais on peut pas se quitter comme ca !

    Je remarque que ces 2 codes presque similaire ne produisent pas le mm resultat . Je ne saisis pas la nuance ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int main(){
      int n,p;
      n=p=0;
      while(n<5) n+=2 ; p++;
      printf("A: n = %d, p = %d\n",n,p);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int main(){
      int n,p;
      n=p=0;
      while(n<5) { n+=2 ; p++ ; }
      printf("B: n = %d, p = %d\n",n,p);

Discussions similaires

  1. [XL-2007] Barre de progression pendant boucle While
    Par yaciin dans le forum Excel
    Réponses: 7
    Dernier message: 11/03/2014, 16h27
  2. Boucle while & read
    Par gibet_b dans le forum Linux
    Réponses: 4
    Dernier message: 29/04/2005, 15h38
  3. boucle while et post incrémentation
    Par tut dans le forum C++
    Réponses: 7
    Dernier message: 10/12/2004, 17h24
  4. [MFC] Dialog dans une boucle while
    Par oxor3 dans le forum MFC
    Réponses: 5
    Dernier message: 23/04/2004, 22h51
  5. [débutant]Documentation? boucle "while"? Session?
    Par o151181 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 19/01/2004, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo