Académique Documents
Professionnel Documents
Culture Documents
Exercice 1 :
#include <iostream>
class pile_entier {
private:
int* tableau;
int capacite;
int sommet;
public:
pile_entier(int n) {
capacite = n;
tableau = new int[capacite];
sommet = -1;
}
pile_entier() {
capacite = 20;
tableau = new int[capacite];
sommet = -1;
}
~pile_entier() {
delete[] tableau;
}
pile_entier(const pile_entier& autre) {
capacite = autre.capacite;
tableau = new int[capacite];
sommet = autre.sommet;
for (int i = 0; i <= sommet; i++) {
tableau[i] = autre.tableau[i];
}
}
void empile(int p) {
if (!pleine()) {
sommet++;
tableau[sommet] = p;
} else {
std::cout << "La pile est pleine. Impossible d'empiler." << std::endl;
}
}
int depile() {
if (!vide()) {
int valeur = tableau[sommet];
sommet--;
return valeur;
} else {
std::cout << "La pile est vide. Impossible de dépiler." << std::endl;
return -1; // Valeur par défaut en cas d'erreur
}
}
int pleine() {
return sommet == capacite - 1;
}
int vide() {
return sommet == -1;
}
};
int main() {
pile_entier pile1;
pile1.empile(10);
pile1.empile(20);
pile1.empile(30);
pile2->empile(5);
pile2->empile(15);
public:
void operator<(int n) {
if (nelem < dim) {
adr[nelem] = n;
nelem++;
} else {
std::cout << "La pile est pleine. Impossible d'ajouter " << n << std::endl;
}
}
void operator>(int& n) {
if (nelem > 0) {
nelem--;
n = adr[nelem];
} else {
std::cout << "La pile est vide. Aucun élément à retirer." << std::endl;
n = -1; // Valeur par défaut en cas d'erreur
}
}
};
2. Fonctions amies :
class pile_entier {
private:
int dim;
int* adr;
int nelem;
public:
class chaine {
private:
char* contenu;
int longueur;
public:
chaine() : contenu(nullptr), longueur(0) {}
~chaine() {
delete[] contenu;
}
int main() {
chaine a("Bonjour");
chaine b("Monde");
a.afficher();
std::cout << std::endl;
b.afficher();
std::cout << std::endl;
chaine c = a + b;
c.afficher();
std::cout << std::endl;
c[0] = 'H';
c.afficher();
return 0;
}