#include #include #include #include #include using namespace std; void continuer() { cout << endl << endl << "Appuyez sur une lettre suivie de Entree " ; char lettre; cin >> lettre ; cout << endl << endl; } class Cercle { private: double rayon; public: Cercle(double rayon = 5.0) { this->rayon = rayon; } double surface() const { return 3.14159* rayon*rayon; } // surdéfinir l'opérateur < pour appliquer le tri (sort). bool operator < (Cercle &); friend ostream & operator << (ostream &, const Cercle &); }; // surdéfinir l'opérateur < pour le tri: bool Cercle::operator < (Cercle & autre) { return rayon < autre.rayon; } // fonction amie permettant de surcharger l'opérateur << ostream & operator << (ostream & sortie, const Cercle & c) { sortie.setf(ios::fixed); sortie.setf(ios::showpoint); sortie << "Rayon : " << setw(7) << setprecision(2) << c.rayon << " Surface : " << setw(7) << setprecision(2) << c.surface() << endl; return sortie ; } // une manière pour afficher void afficher(list liste,string message) { if ( liste.size() == 0 ) cout << message << " est vide\n"; else { int rang = 0; cout << "Contenu de " << message << " de taille " << liste.size() << " :\n"; for ( list::iterator il = liste.begin(); il != liste.end(); il++) { cout << ++ rang << ") "; cout << *il ; } cout << endl; } } int main() { list liste; afficher(liste, "la liste au debut"); liste.insert(liste.begin(), Cercle(10.2)); liste.insert(liste.end(), Cercle(6.8)); liste.insert(liste.end(), Cercle(12.4)); liste.push_back(Cercle(7.3)); liste.push_front(Cercle(20.6)); afficher(liste, "la liste apres quelques ajouts"); list::iterator il = min_element(liste.begin(), liste.end()); cout << "Cercle ayant rayon minimal: " << *il << endl; il = max_element(liste.begin(), liste.end()); cout << "Cercle ayant rayon maximal: "<< *il << endl; liste.sort(); afficher(liste, "la liste apres le tri"); continuer(); return 0; } /* la liste au debut est vide Contenu de la liste apres quelques ajouts de taille 5 : 1) Rayon : 20.60 Surface : 1333.17 2) Rayon : 10.20 Surface : 326.85 3) Rayon : 6.80 Surface : 145.27 4) Rayon : 12.40 Surface : 483.05 5) Rayon : 7.30 Surface : 167.42 Cercle ayant rayon minimal: Rayon : 6.80 Surface : 145.27 Cercle ayant rayon maximal: Rayon : 20.60 Surface : 1333.17 Contenu de la liste apres le tri de taille 5 : 1) Rayon : 6.80 Surface : 145.27 2) Rayon : 7.30 Surface : 167.42 3) Rayon : 10.20 Surface : 326.85 4) Rayon : 12.40 Surface : 483.05 5) Rayon : 20.60 Surface : 1333.17 Appuyez sur une lettre suivie de Entree */