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

SL & STL C++ Discussion :

Probleme d'execution : le programme doit se fermer (mode console)


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 107
    Par défaut Probleme d'execution : le programme doit se fermer (mode console)
    bonjour tout le monde,

    je me demande les raisons dans le but de comprendre pourquoi parfois mes programmes " crashent " meme s'ils ne contiennent aucune erreur, dés que la fentere en mode console se lance un message du systeme s'affiche alors indiquant que le programme doit se fermer !!!!

    c'est bizzare non ?

    j'utilise Dev-C++ dans sa derniere version et sous OS Vista

    merci de me repondre

  2. #2
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    sans code... mais en général ça vient d'un comportement indéterminé du code..

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par LePassager Voir le message
    pourquoi parfois mes programmes " crashent " meme s'ils ne contiennent aucune erreur,
    On a tous des programmes sans erreur .... jusqu'au premier bug
    Montre-nous quelques sources pour avoir des infos plus précises.

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 107
    Par défaut
    merci pour la reponse

    voila un bout de code sachant que j'ai tester toutes les fonctions de toutes les classes créées avant de l'utiliser dans cette methode


    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    void Lancer(vector<Carte>& Jeu, Joueur& joueur1, Joueur& joueur2)
    {
            Packet Pg(Jeu);
            vector<Carte>  pj1, pj2;
     
            Pg.SplitPacket(pj1, pj2);
     
            Packet p1(pj1);
            Packet p2(pj2);
     
            Main m1 = joueur1.GetMainJoueur();
            Main m2 = joueur2.GetMainJoueur();
     
            vector<Carte> tmp1(p1.GetlePacket());
            vector<Carte> tmp2(p2.GetlePacket());
     
            Carte c1(m1.RetirerCarte(tmp1));
            Carte c2(m2.RetirerCarte(tmp2));
     
     
     
            while(PackJoueur2.size()!= 0 && PackJoueur1.size()!= 0)
            {
                p1.MelangerPacket();
                p2.MelangerPacket();
     
                if( c1.Comparer(c2) == 1 )
                {
                    joueur1.SetScore(1);
                    joueur2.SetScore(1);
                    joueur1.InformationsJoueur();
     
                    joueur2.InformationsJoueur();
                    cout<<endl;
                }
                else if( c1.Comparer(c2) == 2 )
                {      
                    Joueur2.SetScore(3);
                    Joueur2.InformationsJoueur();
                    cout<<endl;
                }
                else if( c1.Comparer(c2) == 3 )
                {      
                    Joueur1.SetScore(3);
                    Joueur1.InformationsJoueur();
                    cout<<endl;
                }
     
                cout << "Pack1 : " << PackJoueur1.size() 
                     <<" Pack2 : " << PackJoueur2.size() <<endl;
                cout << endl << endl;
                Sleep(3); 
            }
     
            if( joueur1.GetScore() == joueur2.GetScore() )
            {
                cout<<"la partie s'est terminée avec égalité !"<<endl;
                joueur1.InformationsJoueur();cout<<endl;
                joueur2.InformationsJoueur();cout<<endl;
            }
            else if( Joueur1.GetScore() > Joueur2.GetScore() )
            {
     
                Joueur1.InformationsJoueur();cout<<" a gangné !"<<endl;
                Joueur2.InformationsJoueur();cout<<" a perdu !"<<endl;
            }
            else if( Joueur1.GetScore() < Joueur2.GetScore() )
            {
     
                Joueur2.InformationsJoueur();cout<<" a gangné !"<<endl;
                Joueur1.InformationsJoueur();cout<<" a perdu !"<<endl;
            }
     
     
     
    }
    Est ce que je vous explique le code ?
    generalement c'est jeu de cartes

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par LePassager Voir le message
    merci pour la reponse

    voila un bout de code sachant que j'ai tester toutes les fonctions de toutes les classes créées avant de l'utiliser dans cette methode
    Bonne démarche. Ca évite effectivement beaucoup de soucis.

    Citation Envoyé par LePassager Voir le message
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    void Lancer(vector<Carte>& Jeu, Joueur& joueur1, Joueur& joueur2)
                      {
                            Packet Pg(Jeu);
                            vector<Carte>  pj1, pj2;
     
                            Pg.SplitPacket(pj1, pj2);
     
                            Packet p1(pj1);
                            Packet p2(pj2);
     
                            Main m1 = joueur1.GetMainJoueur();
                            Main m2 = joueur2.GetMainJoueur();
     
                            vector<Carte> tmp1(p1.GetlePacket());
                            vector<Carte> tmp2(p2.GetlePacket());
     
                            Carte c1(m1.RetirerCarte(tmp1));
                            Carte c2(m2.RetirerCarte(tmp2));
     
     
     
                            while(PackJoueur2.size()!= 0 && PackJoueur1.size()!= 0)
                               {
                                     p1.MelangerPacket();
                                     p2.MelangerPacket();
     
                                     if( c1.Comparer(c2) == 1 )
                                     {
                                           joueur1.SetScore(1);
                                           joueur2.SetScore(1);
                                           joueur1.InformationsJoueur();
     
                                           joueur2.InformationsJoueur();
                                           cout<<endl;
                                     }
                                     else if( c1.Comparer(c2) == 2 )
                                     {      
                                           Joueur2.SetScore(3);
                                           Joueur2.InformationsJoueur();
                                           cout<<endl;
                                     }
                                     else if( c1.Comparer(c2) == 3 )
                                     {      
                                           Joueur1.SetScore(3);
                                           Joueur1.InformationsJoueur();
                                           cout<<endl;
                                     }
     
                                     cout<<"Pack1 : "<<PackJoueur1.size()<<" Pack2 : "<<PackJoueur2.size()<<endl;
                                     cout<<endl;cout<<endl;
                                     Sleep(3); 
                               }
     
                           if( joueur1.GetScore() == joueur2.GetScore() )
                           {
                                 cout<<"la partie s'est terminée avec égalité !"<<endl;
                                 joueur1.InformationsJoueur();cout<<endl;
                                 joueur2.InformationsJoueur();cout<<endl;
                           }
                           else if( Joueur1.GetScore() > Joueur2.GetScore() )
                           {
     
                                 Joueur1.InformationsJoueur();cout<<" a gangné !"<<endl;
                                 Joueur2.InformationsJoueur();cout<<" a perdu !"<<endl;
                           }
                           else if( Joueur1.GetScore() < Joueur2.GetScore() )
                           {
     
                                 Joueur2.InformationsJoueur();cout<<" a gangné !"<<endl;
                                 Joueur1.InformationsJoueur();cout<<" a perdu !"<<endl;
                           }
     
     
     
                      }
    Est ce que je vous explique le code ?
    generalement c'est jeu de cartes
    Ca manque encore d'information. Ce qui ne me saute pas aux yeux c'est comment tu sors de ta boucle while. Outre que PackJoueur1 et PackJoueur2 ne sont pas définis dans le bout de code que tu postes, les méthodes indiquées dans la boucle while ne semblent pas retirer des nouvelles cartes des paquets. D'où l'impression que tu ne sors jamais de la boucle.

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 107
    Par défaut
    mecri pour le temps que tu m'accordes

    en fait,c'est la methode RetirerCarte() qui permet de determiner la fin de la boucle et par lasuite d'en sortir, puisqu'elle supprime la premiere carte du conteneur puis retourne la carte supprimée
    et par la suite la valeur contenue dans size() decremente

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par LePassager Voir le message
    mecri pour le temps que tu m'accordes

    en fait,c'est la methode RetirerCarte() qui permet de determiner la fin de la boucle et par lasuite d'en sortir, puisqu'elle supprime la premiere carte du conteneur puis retourne la carte supprimée
    et par la suite la valeur contenue dans size() decremente
    Sauf que je ne vois pas où elle est appelée dans le while :
    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
    25
    26
    27
    28
    29
    30
    31
    32
     
                            while(PackJoueur2.size()!= 0 && PackJoueur1.size()!= 0)
                               {
                                     p1.MelangerPacket();
                                     p2.MelangerPacket();
     
                                     if( c1.Comparer(c2) == 1 )
                                     {
                                           joueur1.SetScore(1);
                                           joueur2.SetScore(1);
                                           joueur1.InformationsJoueur();
     
                                           joueur2.InformationsJoueur();
                                           cout<<endl;
                                     }
                                     else if( c1.Comparer(c2) == 2 )
                                     {      
                                           Joueur2.SetScore(3);
                                           Joueur2.InformationsJoueur();
                                           cout<<endl;
                                     }
                                     else if( c1.Comparer(c2) == 3 )
                                     {      
                                           Joueur1.SetScore(3);
                                           Joueur1.InformationsJoueur();
                                           cout<<endl;
                                     }
     
                                     cout<<"Pack1 : "<<PackJoueur1.size()<<" Pack2 : "<<PackJoueur2.size()<<endl;
                                     cout<<endl;cout<<endl;
                                     Sleep(3); 
                               }

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 107
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Bonne démarche. Ca évite effectivement beaucoup de soucis.
    merci de m'encourager

    le probleme ce que lors de l'appel de la methode Lancer() dans le main principal

    le programme se ferme sans que j'obiens une erreur ou une indication

    c'est pire comme resultat !

  9. #9
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Rajoutes des traces pour voir comment ton programme se comporte (dump vers cout ou vers un fichier log) : d'abord dans chaque étape de ton main, puis de plus en plus finement en fonction de là où ça s'arrête.
    Des bons testU c'est une super démarche que beaucoup devrait suivre.
    Ensuite, un bon debug (avec un debugger ou avec des traces), c'est ++ !

  10. #10
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Un petit "Rebuild All" puis lancement en mode debug pas-à-pas pour voire où ça plante exactement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme à l'execution du programme
    Par alphonse62 dans le forum JBuilder
    Réponses: 2
    Dernier message: 20/05/2007, 04h05
  2. Probleme d'execution de programme
    Par vg-matrix dans le forum C
    Réponses: 7
    Dernier message: 09/05/2007, 21h04
  3. probleme d execution programme perl
    Par calimero642 dans le forum Langage
    Réponses: 4
    Dernier message: 13/07/2006, 12h49
  4. Réponses: 20
    Dernier message: 23/06/2006, 20h49
  5. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50

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