Sunteți pe pagina 1din 5

#include <cstdlib> #include <iostream> using namespace std; class Ensemble { int * tab; int taille; int nbelts;

public: Ensemble(int); Ensemble(const Ensemble &); ~Ensemble(); bool estvide(); int cardinal(); bool operator > (int); // ou bien friend bool operator > (const Ensemble &, int); bool operator > (const Ensemble &); // ou bien friend bool operator > (const Ensemble &, const Ensemble &); void operator + (int); // ou bien friend void operator + (const Ensemble &, int); Ensemble operator + (const Ensemble &); // ou bien friend Ensemble operator + (const Ensemble &, const Ensemble &); Ensemble & operator = (const Ensemble &); friend ostream & operator << (ostream &, const Ensemble &); friend istream & operator >> (istream &, Ensemble &); };

Ensemble::Ensemble(int ta=100) { taille =ta; nbelts=0; tab = new int [taille]; } Ensemble::Ensemble(const Ensemble & E) { taille = E.taille; nbelts=E.nbelts; tab = new int [taille]; for (int i=0; i<nbelts;i++) tab[i]=E.tab[i]; } Ensemble::~Ensemble() { delete tab; } bool Ensemble::estvide() { return (nbelts==0); } int Ensemble::cardinal() { return nbelts; } bool Ensemble::operator > (int el) { int i=0; while ( i<nbelts && tab[i]!= el) i++; if (tab[i]==el) return true; else return false; }

bool Ensemble::operator > (const Ensemble & E) { int i=0; while ( i<E.nbelts && *this> E.tab[i]) // on utilise > qui est dfini juste avant i++; if (i== E.nbelts) return true; else return false; } void Ensemble::operator + (int v) { if (nbelts < taille) tab[nbelts]=v; else { int * p =tab; tab = new int[taille+1]; for(int i=0;i<taille;i++) tab[i]= p[i]; tab[taille]=v; delete p; } nbelts++; } Ensemble Ensemble::operator + (const Ensemble & E) { Ensemble Res(taille+E.taille); for(int i=0; i<nbelts;i++) Res+tab[i]; //on utilise + qui est dfini juste avant for(int i=0; i<E.nbelts;i++) Res+E.tab[i]; //on utilise + qui est dfini juste avant return Res; }

Ensemble & Ensemble::operator = (const Ensemble & E) { if(this!= & E) { taille=E.taille; nbelts=E.nbelts; delete tab; tab= new int [taille]; for(int i=0;i<nbelts;i++) tab[i]= E.tab[i]; } return *this; } ostream & operator << (ostream & os, const Ensemble & E) { if (E.nbelts!=0) {for(int i=0;i<E.nbelts;i++) os << E.tab[i] << "\t"; os<<endl; } else os<<"Ensemble vide"<<endl; return os; } istream & operator >> (istream & is, Ensemble & E) { int v; char rep; E.nbelts=0; do {cout<<"saisir une valeur insrer:"; is>> v;

E+v; do { cout<<" y a-t-il une autre valeur insrer. O/N?"; is>>rep; }while ( rep!='O' && rep!='o' && rep!='N' && rep!='n'); }while (rep == 'O' || rep =='o'); return is; }

int main() { system("PAUSE"); return 0; }

S-ar putea să vă placă și