ho scritto questa pila con le principali istruzione ma dov'è che sbaglio ? visto che quando vado provarla mi funziona solo una volta se tutto va bene!! e la funzione stampa come si fa?
grazie per il vostro aiuto! ve ne sarò riconoscente a vita!!!





#include <cstdlib>
#include <iostream>
#include "pila.h"
using namespace std;
void menu();

int main(int argc, char *argv[])
{
pila a;
int scelta;
int t;
int e; //elemento da inserire

do {
menu();
cout<<"inserisci scelta"<<endl;
cin>>scelta;
switch(scelta) {
case 1: cout<<"inserisci elemento"<<endl; cin>>e; a.push(e); break;
case 2: cout<<"gli elementi della pila sono"<<endl; a.stampa(e); break;
case 3: cout<<"l'elemento in testa e': "<<endl; a.pop(e); break;
case 4: cout<<"copia elemento in testa alla pila"<<endl; a.top(e); break;
default : break;
}
} while(scelta <6);

system("PAUSE");
return EXIT_SUCCESS;
}
void menu() {
cout<<"******************************************* **********************************"<<endl;
cout<<"******************************************* ***********************************"<<endl;
cout<<"1)inserisci elemento"<<endl;
cout<<"2)stampa pila"<<endl;
cout<<"3 prelevare elemento in testa alla pila"<<endl;
cout<<"4) copia elemento in testa alla pila"<<endl;
cout<<"******************************************* **********************************"<<endl;
cout<<"******************************************* ***********************************"<<endl;
}



#ifndef _pila_h_
#define _pila_h_

typedef int E;
class pila {
public:
pila(); //costruttore

void push (const E e);
void stampa(E & e);
void pop (E & e);
void top (E & e) const;
bool empty () const ;
bool full() const;
private :
enum{N=100}; //massimlo numero di elementi nella pila
E p[N]; //p array di N elementi di tipo E
int t; //t puntatore alla testa dell'array

};





#endif


#include <cstdlib>
#include <iostream>
#include "pila.h"
using namespace std;

//prototipo

pila :: pila() { (t=0);}
// assegna a empty true se la pila e' vuota
bool pila::empty() const {
return (t==0); }
//assegna a full true se la pila è piena
bool pila :: full () const {
return (t==N); }

//inserisci elemento
void pila:: push(const E e) {
p[t]=e;
t++;
}
//stampa pila
void pila:: stampa(E & e){
while(t!=0){
e=p[t-1];
t--;
cout<<" "<<e<<endl;} }
//preleva elemento in testa
void pila:: pop (E & e){
t--; e=p[t];
cout<<" "<<e<<endl;
}
// copia elemento in testa alla pila
void pila :: top (E & e) const {
e=p[t-1];
cout<<" "<<e<<endl;
}