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 :

Pile


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Points : 11
    Points
    11
    Par défaut Pile
    Bonjour as tous!

    Voila on ma demander de coder une pile en c++.
    bon ca ma pas trop poser de probleme mais ya un petit truc qui cloche
    voila

    le prof nous demande un main qui lui permetra de tester le programme entre 30s.

    Effectivement le but de cette manoeuvre et de voir si les valeur empilé corresponde bien et que toute se passe bien et ensuite meme chose pour pour depilé

    voici le main que je pondu mais voila ca m'afiche 0

    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
    //Test du constructeur normal et empilement
     
    	//Creer une pile cP1 de Taille 10
     
    	CPile cP1(10);
    //Empiler la valeur -18 ,14 sur cP1
     
     
    	nR=cP1.Empiler(-18);
                    nR=cP1.Empiler(14);
    //Afichage pour tester 
     
     
    	cout<<"Valeur attendu : -18 "<<endl;
     
    	cout<<"Valeur obtenue :  "<<nR<<endl<<endl;
     
     
    	cout<<"Valeur attendu : 14 "<<endl;
     
    	cout<<"Valeur obtenue :  "<<nR<<endl<<endl;
    Donc voila je ne comprend pas pourquoi cela ne marche ca m'affiche 0
    Compilation warning et execution ok!

    J'esper que vous pourrez m'aider...
    Merci Beaucoup

  2. #2
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Déjà, tu pourrais nous en dire plus sur ta classe CPile.
    Puis, tu essai de faire de la récursivité sans fonction récursive, si j'ai bien compris?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Salut !!

    Bon j'ai resolu mon probleme ...Dans la definition de la fonction membres je ne retourné pas la bonne valeur...!!

    merci de s'etre penché sur la solution..


    mais voici pour info la classe et la definition
    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
     
    //PIle.h
    #include <iostream.h>
     
    #define DIM 25
     
    typedef unsigned int Uint;
     
     
     
    class CPile {
     
    	int m_pTab[DIM];
     
    	int m_uSP;
     
    	bool m_bPileVide;
     
    	bool m_bPilePleine;
     
    	int m_uDim;
     
     
    public:
     
    	CPile() ;
     
    	CPile(Uint);
     
    	int Empiler(int nVal);
     
    	int Depiler(int& nVal);
     
    	bool PileVide();
     
    	bool PilePleine();
     
    	void AfficherEmpile();
    	void AfficherDepile();
    };
     
    //Pile.CPP
    #include "PILE.H"
     
     
     
     
     
     
     
     
     
     
     
    //Déclaration du constructeur par defaut CPile() {}
     
     
     
    CPile::CPile()
     
    {
     
    	m_uSP=0; //Sommet de la pile
     
    	m_bPileVide=true;
     
    	m_bPilePleine=false;
     
    	m_uDim=DIM;	
     
    }
     
     
     
     
     
     
     
    //Déclaration du constructeur normal
     
    CPile::CPile(Uint uDim)
     
    {
     
    	m_uSP=0;
     
    	m_bPileVide=true;
     
    	m_bPilePleine=false;
     
    	m_uDim=uDim;
     
    }
     
     
     
    //Déclaration de la méthode PilePleine
     
    bool CPile::PilePleine()
     
    {
     
    	return PilePleine;
     
    }
     
    //Déclaration de la méthode	 PileVide
     
     
     
    bool CPile::PileVide()
     
    {
     
    	return PileVide;
     
    }
     
     
     
    //Déclaration de la méthode Empiler
     
     
     
    int CPile::Empiler(int nVal)
     
    {
     
    	if(m_bPilePleine==true)
     
    	cout<<"Erreur Pile pleine"<<endl;
     
    //	return 1;
    if(m_bPilePleine)return 1;
    	m_pTab[m_uSP++]=nVal;
     
    	m_bPileVide=false;
     
    	if(m_uSP==m_uDim)m_bPilePleine=true;
    	return nVal<-----------;Je retourner un 0 donc ca popuais pas marché!!!!
     
    //m_pTab[m_uSP]=nVal;
     
    //	m_bPileVide=false;
     
    //	m_uSP++;
     
    //	if(m_uSP==m_uDim)
    //	{
    //		m_bPilePleine=true;
    //		cout<<"Erreur Pile pleine"<<endl;
    //	}else cout<<"Pile OK"<<endl;
    //	return 0;
     
    }
     
     
     
    //Déclaration de la méthode	Depiler
     
     
     
    int CPile::Depiler(int& nVal)
     
    {
     
    	/*if(m_bPileVide==true)
     
    	cout<<"Erreur Pile Vide"<<endl;
     
    	return 1;
     
    	m_pTab[m_uSP--]=*nVal;
     
    	m_bPilePleine=false;
     
    	if(m_uSP==m_uDim)m_bPileVide=true;
     
    	return 0;
    */m_uSP--;
     
    	nVal=m_pTab[m_uSP];
     
    	m_bPilePleine=false;
     
    	if(m_uSP==0)
     
    		m_bPileVide=true;
    	return 1;
     
     
    }
    /*
    int CPile::Depiler(int *nVal){
     
    	if(m_bPileVide) return 1;
     
    	m_pTab[m_uSP--]=m_pTab[m_uSP];
     
    	m_bPilePleine=FALSE;
     
    	if(m_uSP==m_uDim) m_bPileVide=TRUE;
     
    	return 0;
     
    }*/
     
     
     
     
    void CPile::AfficherEmpile()
     
    {
     
     Uint uK;
     
    	for(uK=0;uK<m_uSP;uK++)
     
    		cout<<m_pTab[uK]<<"   Vient d'etre empiler sur l emplacement "<<uK<<"   de la pile"<<endl;
     
    }
    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    C'est assez nul si tu veux mon avis.
    Les booléens m_bPileVide et m_bPilePleine servent à rien
    L'utilisation d'un tableau de taille fixe définie par le préprocesseur n'est pas pertinent du tout.
    Les méthodes d'affichage n'ont rien à faire dans cette classe.
    Boost ftw

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    bah tu sais quand ton prof a travaillez sur des missile nucleaire et que il essai de te faire comprendre assez facilement parce que t débutant je pense pas que ca soit si nul que ca... mais bon si ta une meilleur idéé exprime toi..

  6. #6
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Il ne vous demanderait pas d'écrire des tests unitaires à la main des fois ?
    Et effectivement, les affichages sont à bannir des classes qui font le boulot demandé.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

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

Discussions similaires

  1. Voir la pile FPU
    Par Qwazerty dans le forum Assembleur
    Réponses: 5
    Dernier message: 11/05/2003, 15h09
  2. Créer des objets sur la pile ?
    Par Cornell dans le forum Langage
    Réponses: 8
    Dernier message: 03/03/2003, 11h47
  3. Etat de la pile sous Linux et Windows
    Par Bibouda dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 16/02/2003, 01h28
  4. La mémoire en Pmode et en Rmode - la pile
    Par le mage tophinus dans le forum Assembleur
    Réponses: 15
    Dernier message: 16/02/2003, 01h00
  5. [TASM] Déclarer le segment de pile
    Par cipher dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 01/10/2002, 03h58

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