#include <iostream>
using namespace std;
const int CAPACITE = 100;
struct Pile {
int donnees[CAPACITE];
int sommet = 0;      
};
// nombre d'éléments
bool estVide(const Pile& p) {
if (p.sommet==0)
return true;
else
return false;
}
void push(Pile& p, int valeur) {
	if (p.sommet>=CAPACITE)
	cout<<"La pile est pleine."<<endl;
	else{
  p.donnees[p.sommet]=valeur;
  p.sommet++;
		
	}
}
int top(const Pile& p) {
if (estVide(p)){
	cout<<"Erreur: La pile est vide."<<endl;
	return -1;
}
else
return p.donnees[p.sommet-1];
}
void pop(Pile& p) {
if (estVide(p)){
	cout<<"Erreur: La pile est vide."<<endl;
}
else
{
	p.sommet--;
}
}
void afficher(const Pile& p) 
{
    cout << "[ ";
    for (int i = 0; i < p.sommet; i++) 
        cout << p.donnees[i] << " ";
    cout << "]" << endl;
}

int main() {
//Dongmo Ange Wilfried	
Pile a, b;
cout<<endl;
push(a, 5);
push(a, 8);
push(b, 42);
afficher(a);
std::cout << "Sommet de a : " << top(a) << "\n";
pop(a);
std::cout << "Sommet de a : " << top(a) << "\n";
std::cout << "Sommet de b : " << top(b) << "\n";
pop(b);
pop(b);   // erreur volontaire
a.sommet = 50;
cout<<top(a);

return 0;
}

//Oui, le code compile sans problème.
//Il renvoie une valeur aléatoire  se trouvant à l'indice 49 du tableau (a.donnees[49]), car cette case n'a pas éte initialise par un push.



