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éme lors de l'execution


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Août 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Probléme lors de l'execution
    Bonjour a tous

    je vien de débuter la programmation ,je developpe sous dev-c++.Lorsque je compile et éxecute mon programme c++, la fenétre dos affichant le resultat s'ouvre et se referme rapidement.Mais je veu que ca reste ouverte pour que je puisse voir les resultats .Est ce que qq peut m'aider.

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut, et bienvenue sur le forum

    Faisons simple: un petit tour vers la FAQ te donnera toutes les réponses
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonjour,

    sous windows, il y a aussi
    mais je ne sais pas si c'est portable.

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    Bonjour,

    sous windows, il y a aussi
    mais je ne sais pas si c'est portable.
    Justement, ce n'est pas portable

    De plus, l'instruction system fait appel... à un appel système qui est, classiquement, plus lent que les possibilités "natives"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre régulier Avatar de Chessmaster1966
    Inscrit en
    Juillet 2010
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    Tout simplement ceci :

    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
    21
    22
    23
    24
     
    #include <iostream>
    #include <stdio.h>
     
    using namespace std;
     
    void Stop()
    {
     
        cout << "Pressez une touche pour continuer...";
        getchar();
     
    }
     
    int main()
    {
     
           //Faire quelque chose...
     
           //Mettre le l'exécution du programme en pause.
           Stop();
     
        return 0;
    }
    Le bonheur est sans raison

  6. #6
    Membre régulier Avatar de Chessmaster1966
    Inscrit en
    Juillet 2010
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    Oups

    Lire :
    "Pressez sur ENTRE pour continuer..."

    et non,

    "Pressez sur une touche pour continuer.."
    Le bonheur est sans raison

  7. #7
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Citation Envoyé par Chessmaster1966 Voir le message
    Tout simplement ceci :

    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
    21
    22
    23
    24
     
    #include <iostream>
    #include <stdio.h>
     
    using namespace std;
     
    void Stop()
    {
     
        cout << "Pressez une touche pour continuer...";
        getchar();
     
    }
     
    int main()
    {
     
           //Faire quelque chose...
     
           //Mettre le l'exécution du programme en pause.
           Stop();
     
        return 0;
    }
    Le fait est que getchar est une fonction issue du C qui subit exactement l'ensemble des inconvéniants des fonctions issues du C par rapport aux possibilités offertes par C++.

    C'est la raison pour laquelle l'idéal reste de suivre exactement le code qui apparait dans le lien vers la FAQ que j'ai donné lors de ma première intervention:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        cout << "Appuyez sur entrée pour continuer...";
        cin.ignore( numeric_limits<streamsize>::max(), '\n' );
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #8
    Membre régulier Avatar de Chessmaster1966
    Inscrit en
    Juillet 2010
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    Je suis d'accord avec toi Koala01 mettons le C de côté pourquoi pas ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cout << "Appuyez sur ENTREE pour continuer...";
    cin.ignore();
    Et ça marche très bien, ne compliquons pas en mettant un argument à la syntaxe bizarre pour le débutant.
    Le bonheur est sans raison

  9. #9
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Citation Envoyé par Chessmaster1966 Voir le message
    Je suis d'accord avec toi Koala01 mettons le C de côté pourquoi pas ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cout << "Appuyez sur ENTREE pour continuer...";
    cin.ignore();
    Et ça marche très bien, ne compliquons pas en mettant un argument à la syntaxe bizarre pour le débutant.
    Parce que tu auras un problème le jour où l'utilisateur essayera d'appuier sur enter après avoir introduit quelque chose:

    Seul le premier caractère sera utilisé, et le flux ne sera donc pas vide pour la prochaine introduction
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  10. #10
    Membre régulier Avatar de Chessmaster1966
    Inscrit en
    Juillet 2010
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    Entièrement d'accord sur ce point mais on lui demande d'appuyer sur ENTREE et rien d'autre pour le débutant je pense que la syntaxe est plus simple.

    Mais c'est vrai il ne faut pas qu'il rentre quoi que ce soit d'autre sinon aie, aie, aie bobo partout
    Le bonheur est sans raison

  11. #11
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Citation Envoyé par Chessmaster1966 Voir le message
    Entièrement d'accord sur ce point mais on lui demande d'appuyer sur ENTREE et rien d'autre pour le débutant je pense que la syntaxe est plus simple.

    Mais c'est vrai il ne faut pas qu'il rentre quoi que ce soit d'autre sinon aie, aie, aie bobo partout
    Justement...

    Une "bonne" application doit un minimum résister au "test du singe".

    Quitte à apprendre certaines choses à ceux qui demandent de l'aide sur le forum, autant essayer de leur donner directement les bonnes habitudes, quitte à ce que la syntaxe semble un peu plus complexes, non
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  12. #12
    Membre régulier Avatar de Chessmaster1966
    Inscrit en
    Juillet 2010
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    Je reviens à la charge car le code que tu préconise pour faire une pause dans le programme n'est pas correct mais ce détail est subtil.
    Le code que tu proposes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      cout << "Appuyez sur entrée pour continuer...";
      cin.ignore( numeric_limits<streamsize>::max(), '\n' );
    ne fonctionnera pas correctement en effet si on demande à l'utilisateur de saisir son nom et ensuite on affiche un message de bienvenue et que l'on utilise ton code pour faire une pause afin de lire le message, le programme ne
    s'arrête pas. Ce qui veut dire que le flux contient toujours les caractères précédement saisis et quand :
    cin.ignore(numeric_limits<streamsize>::max, '\n') est exécuté il vide le flux et continu son chemin donc, un gros bug.

    Voici la version correcte que tu pourras utiliser pour mettre à jour la FAQ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void Stop()
    {
       //Mettre en pause le flux du programme.
     
       cin.ignore(numeric_limits<streamsize>::max(), '\n');
       cout << "Appuyez sur ENTREE pour continuer...";  
       cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }
    Pardonne moi d'insister !
    Le bonheur est sans raison

  13. #13
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Citation Envoyé par Chessmaster1966 Voir le message
    Je reviens à la charge car le code que tu préconise pour faire une pause dans le programme n'est pas correct mais ce détail est subtil.
    Le code que tu proposes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      cout << "Appuyez sur entrée pour continuer...";
      cin.ignore( numeric_limits<streamsize>::max(), '\n' );
    ne fonctionnera pas correctement en effet si on demande à l'utilisateur de saisir son nom et ensuite on affiche un message de bienvenue et que l'on utilise ton code pour faire une pause afin de lire le message, le programme ne
    s'arrête pas. Ce qui veut dire que le flux contient toujours les caractères précédement saisis et quand :
    cin.ignore(numeric_limits<streamsize>::max, '\n') est exécuté il vide le flux et continu son chemin donc, un gros bug.

    Voici la version correcte que tu pourras utiliser pour mettre à jour la FAQ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void Stop()
    {
       //Mettre en pause le flux du programme.
     
       cin.ignore(numeric_limits<streamsize>::max(), '\n');
       cout << "Appuyez sur ENTREE pour continuer...";  
       cin.ignore(numeric_limits<streamsize>::max(), '\n');
    }
    Pardonne moi d'insister !
    Il est de toutes manières toujours de ta responsabilité de veiller à ce que les flux d'entrées soient soit complètement vidé lors de l'évaluation des données qu'ils transmettent, soit détruits après usage.

    Si tu as des raisons de croire qu'il est possible que plusieurs chaines de caractères seront introduites par l'utilisateur (ex: les noms ou prénoms composés, sans trait d'union), c'est à toi de le prévoir, entre autres, au travers de l'utilisation de la fonction libre getline (qui prend l'ensemble du buffer d'entrée jusqu'au '\n' par défaut) au lieu de l'opérateur >> qui s'arrête... au premier espace ou assimilé
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. problème lors de l'execution de mon web service
    Par perrotta dans le forum Visual Studio
    Réponses: 1
    Dernier message: 02/12/2009, 17h59
  2. Problème lors de l'execution d'une action
    Par jshems dans le forum Struts 1
    Réponses: 4
    Dernier message: 21/07/2008, 14h13
  3. problème lors de l'execution d'un projet compilé
    Par nathanaelle dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/02/2007, 22h01
  4. problème lors de l'execution
    Par blastmanu dans le forum C++
    Réponses: 4
    Dernier message: 23/04/2006, 13h49

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