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 :

problèmes d'exécution du programme


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut problèmes d'exécution du programme
    Bonjour,
    je veux écrire un algorithme qui sert a deviner un nombre nd.
    voici qu'est ce que j'ai écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #include<stdio.h>
    #include<conio.h>
    int main(void)
    {
    int n,i=1,nd=256 ;
    printf(" Devinez un nombre entier compris entre 0 et 1000\n ") ;
    scanf(" %d ",&n) ;
    while(n!=nd)
    {
    if(n<nd) printf("Trop Petit\n");
    else printf("Trop Grand\n");
    i=i+1;
    scanf("%d",&n);
    }
    if (i=1) printf("BRAVO ! tu as reussit a trouver le nombre a deviner des le premier essai! "); 
    else{if (i<=10) printf(" BRAVO ! tu as trouve le nombre a deviner après %d essays ",i);
            else printf(" tu es un peu lent, tu as trouve le nombre a deviner après %d essais ",i) ;                                                                                   
    }
    getch();
    }
    mais lors de l'exécution, le programme s'affiche comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Devinez un nombre entier compris entre 0 et 1000
     100
    150
    Trop Petit
    Trop Petit
    200
    Trop Petit
    300
    Trop Grand
    250
    Trop Petit
    280
    Trop Grand
    250
    Trop Petit
    255
    Trop Petit
    256
    BRAVO ! tu as reussit a trouver le nombre a deviner des le premier essai!
    voilà,
    Le premier essai (100) apparait sans connaitre est-ce qu'il est trop grand ou trop petit.
    Malgres que j'ai essaye 9 fois il affiche " BRAVO ! tu as reussit a trouver le nombre a deviner des le premier essai! "
    J'ai essaye de connaitre est-ce qu'il y a une incrementation de i en introduisant " printf("i vaut %d",i)" apres la boucle, alors sa valeur a change.
    pourriez-vous m'aider ?
    Merci d'avance...

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    printf(" Devinez un nombre entier compris entre 0 et 1000\n ") ;
    scanf(" %d ",&n);
    Remplace " %d " ("<espace>%d<espace>") par "%d" ("<rien>%d<rien>").

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut problème
    Bonçoir,
    Merci beaucoup Mr Melem, ça marche très bien maintenant sauf que le desième problème n'est pas réglé ( le i ne s'incrémente pas ).

  4. #4
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Arf l'erreur est toute bête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (i=1) printf("BRAVO ! tu as reussit a trouver le nombre a deviner des le premier essai! "); 
    else{if (i<=10) printf(" BRAVO ! tu as trouve le nombre a deviner après %d essays ",i);
            else printf(" tu es un peu lent, tu as trouve le nombre a deviner après %d essais ",i) ;                                                                                   
    }
    Quand tu fais:
    tu mets i à 1.

    Pour comparer i à 1, il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (i==1) printf("BRAVO ! tu as reussit a trouver le nombre a deviner des le premier essai! "); 
    else{if (i<=10) printf(" BRAVO ! tu as trouve le nombre a deviner après %d essays ",i);
            else printf(" tu es un peu lent, tu as trouve le nombre a deviner après %d essais ",i) ;                                                                                   
    }
    Pour éviter ce genre d'étourderie, on peut mettre la valeur avant la variable et faire le test comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (1==i) printf("BRAVO ! tu as reussit a trouver le nombre a deviner des le premier essai! "); 
    else{if (i<=10) printf(" BRAVO ! tu as trouve le nombre a deviner après %d essays ",i);
            else printf(" tu es un peu lent, tu as trouve le nombre a deviner après %d essais ",i) ;                                                                                   
    }
    comme ça, si on ne mets qu'un =, le compilateur remonte l'erreur.

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    En plus, quand tu fais

    tu mets i à 1, et le test se fait sur la valeur de i.
    0 étant faux et toutes les autres valeurs étant vraies, le premier test est validé... Donc on rentre dans le bloc suivant le if.

    ne pas oubliez:
    -d'indenter,
    -le compilateur est notre ami, facilitons-lui la vie,
    -le débuggeur est notre deuxième ami

  6. #6
    Membre averti Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Points : 417
    Points
    417
    Par défaut
    perso j'utiliserai pas printf et scanf.... C'est bien pour le C, mais la on est en C++ si je me gourre pas trop de forum...
    alors je dis préfèrer std::cout et std::cin....
    Première grosse démo en construction :
    http://bitbucket.org/rafy/exo2/

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pour vos aides.

Discussions similaires

  1. Problème pour exécuter le programme
    Par Ashleycole dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 05/09/2010, 23h09
  2. problème d'exécution de programme utilisant cimg
    Par maissaab dans le forum Débuter
    Réponses: 1
    Dernier message: 27/06/2010, 21h30
  3. Problème d'exécution des programmes sous Qt-Creator
    Par fraisa1985 dans le forum Linux
    Réponses: 2
    Dernier message: 23/03/2010, 11h09
  4. problème d'exécution de programme sans delphi installé
    Par bouha2008 dans le forum Débuter
    Réponses: 13
    Dernier message: 09/06/2009, 16h08
  5. Réponses: 4
    Dernier message: 06/03/2008, 19h50

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