#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.
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgQ0FQQUNJVEUgPSAxMDA7CnN0cnVjdCBQaWxlIHsKaW50IGRvbm5lZXNbQ0FQQUNJVEVdOwppbnQgc29tbWV0ID0gMDsgICAgICAKfTsKLy8gbm9tYnJlIGQnw6lsw6ltZW50cwpib29sIGVzdFZpZGUoY29uc3QgUGlsZSYgcCkgewppZiAocC5zb21tZXQ9PTApCnJldHVybiB0cnVlOwplbHNlCnJldHVybiBmYWxzZTsKfQp2b2lkIHB1c2goUGlsZSYgcCwgaW50IHZhbGV1cikgewoJaWYgKHAuc29tbWV0Pj1DQVBBQ0lURSkKCWNvdXQ8PCJMYSBwaWxlIGVzdCBwbGVpbmUuIjw8ZW5kbDsKCWVsc2V7CiAgcC5kb25uZWVzW3Auc29tbWV0XT12YWxldXI7CiAgcC5zb21tZXQrKzsKCQkKCX0KfQppbnQgdG9wKGNvbnN0IFBpbGUmIHApIHsKaWYgKGVzdFZpZGUocCkpewoJY291dDw8IkVycmV1cjogTGEgcGlsZSBlc3QgdmlkZS4iPDxlbmRsOwoJcmV0dXJuIC0xOwp9CmVsc2UKcmV0dXJuIHAuZG9ubmVlc1twLnNvbW1ldC0xXTsKfQp2b2lkIHBvcChQaWxlJiBwKSB7CmlmIChlc3RWaWRlKHApKXsKCWNvdXQ8PCJFcnJldXI6IExhIHBpbGUgZXN0IHZpZGUuIjw8ZW5kbDsKfQplbHNlCnsKCXAuc29tbWV0LS07Cn0KfQp2b2lkIGFmZmljaGVyKGNvbnN0IFBpbGUmIHApIAp7CiAgICBjb3V0IDw8ICJbICI7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHAuc29tbWV0OyBpKyspIAogICAgICAgIGNvdXQgPDwgcC5kb25uZWVzW2ldIDw8ICIgIjsKICAgIGNvdXQgPDwgIl0iIDw8IGVuZGw7Cn0KCmludCBtYWluKCkgewovL0RvbmdtbyBBbmdlIFdpbGZyaWVkCQpQaWxlIGEsIGI7CmNvdXQ8PGVuZGw7CnB1c2goYSwgNSk7CnB1c2goYSwgOCk7CnB1c2goYiwgNDIpOwphZmZpY2hlcihhKTsKc3RkOjpjb3V0IDw8ICJTb21tZXQgZGUgYSA6ICIgPDwgdG9wKGEpIDw8ICJcbiI7CnBvcChhKTsKc3RkOjpjb3V0IDw8ICJTb21tZXQgZGUgYSA6ICIgPDwgdG9wKGEpIDw8ICJcbiI7CnN0ZDo6Y291dCA8PCAiU29tbWV0IGRlIGIgOiAiIDw8IHRvcChiKSA8PCAiXG4iOwpwb3AoYik7CnBvcChiKTsgICAvLyBlcnJldXIgdm9sb250YWlyZQphLnNvbW1ldCA9IDUwOwpjb3V0PDx0b3AoYSk7CgpyZXR1cm4gMDsKfQoKLy9PdWksIGxlIGNvZGUgY29tcGlsZSBzYW5zIHByb2Jsw6htZS4KLy9JbCByZW52b2llIHVuZSB2YWxldXIgYWzDqWF0b2lyZSAgc2UgdHJvdXZhbnQgw6AgbCdpbmRpY2UgNDkgZHUgdGFibGVhdSAoYS5kb25uZWVzWzQ5XSksIGNhciBjZXR0ZSBjYXNlIG4nYSBwYXMgw6l0ZSBpbml0aWFsaXNlIHBhciB1biBwdXNoLgoKCgo=