fork download
  1. #include <iostream>
  2. using namespace std;
  3. const int CAPACITE = 100;
  4. struct Pile {
  5. int donnees[CAPACITE];
  6. int sommet = 0;
  7. };
  8. // nombre d'éléments
  9. bool estVide(const Pile& p) {
  10. if (p.sommet==0)
  11. return true;
  12. else
  13. return false;
  14. }
  15. void push(Pile& p, int valeur) {
  16. if (p.sommet>=CAPACITE)
  17. cout<<"La pile est pleine."<<endl;
  18. else{
  19. p.donnees[p.sommet]=valeur;
  20. p.sommet++;
  21.  
  22. }
  23. }
  24. int top(const Pile& p) {
  25. if (estVide(p)){
  26. cout<<"Erreur: La pile est vide."<<endl;
  27. return -1;
  28. }
  29. else
  30. return p.donnees[p.sommet-1];
  31. }
  32. void pop(Pile& p) {
  33. if (estVide(p)){
  34. cout<<"Erreur: La pile est vide."<<endl;
  35. }
  36. else
  37. {
  38. p.sommet--;
  39. }
  40. }
  41. void afficher(const Pile& p)
  42. {
  43. cout << "[ ";
  44. for (int i = 0; i < p.sommet; i++)
  45. cout << p.donnees[i] << " ";
  46. cout << "]" << endl;
  47. }
  48.  
  49. int main() {
  50. //Dongmo Ange Wilfried
  51. Pile a, b;
  52. cout<<endl;
  53. push(a, 5);
  54. push(a, 8);
  55. push(b, 42);
  56. afficher(a);
  57. std::cout << "Sommet de a : " << top(a) << "\n";
  58. pop(a);
  59. std::cout << "Sommet de a : " << top(a) << "\n";
  60. std::cout << "Sommet de b : " << top(b) << "\n";
  61. pop(b);
  62. pop(b); // erreur volontaire
  63. a.sommet = 50;
  64. cout<<top(a);
  65.  
  66. return 0;
  67. }
  68.  
  69. //Oui, le code compile sans problème.
  70. //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.
  71.  
  72.  
  73.  
  74.  
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
[ 5 8 ]
Sommet de a : 8
Sommet de a : 5
Sommet de b : 42
Erreur: La pile est vide.
0