Ranger les eleve grace o moyenne c/c++
Fermé
moussadjijunior
Messages postés
107
Date d'inscription
jeudi 27 septembre 2007
Statut
Membre
Dernière intervention
3 février 2020
-
11 oct. 2008 à 07:34
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 - 11 oct. 2008 à 12:50
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 - 11 oct. 2008 à 12:50
A voir également:
- Ranger les eleve grace o moyenne c/c++
- Calculer une moyenne sur excel - Guide
- O&o shutup10 - Télécharger - Confidentialité
- Ranger par ordre alphabétique excel - Guide
- Ô majuscule - Guide
- Paramètrez la messagerie électronique ci-dessous pour ranger automatiquement dans le dossier famille les courriers envoyés par tonton@pixmail.org contenant le mot cousin. - Forum Mail
1 réponse
mamiemando
Messages postés
33407
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
29 novembre 2024
7 806
11 oct. 2008 à 12:50
11 oct. 2008 à 12:50
Le plus simple c'est d'utiliser un std::set et de redéfinir un foncteur pour ordonner les éléments. Exemple :
Comme tu le vois la relation d'ordre entre les différents élèves est implémentées au niveau du foncteur sorty_by_notes et peut être facilement modifié. À l'exécution on obtient :
#include <iostream> #include <string> #include <set> struct eleve_t{ std::string prenom; std::string nom; float moyenne; // Le constructeur eleve_t( const std::string & prenom0, const std::string & nom0, const float & moyenne0 ): prenom(prenom0), nom(nom0), moyenne(moyenne0) {} }; std::ostream & operator << (std::ostream & out,const eleve_t & x){ out << "nom: " << x.nom << "\tprenom: " << x.prenom << "\tmoyenne: " << x.moyenne; return out; } struct sort_eleve_by_note{ inline bool operator()(const eleve_t & x,const eleve_t & y){ // 1) on trie sur la moyenne if (x.moyenne < y.moyenne) return true; if (x.moyenne > y.moyenne) return false; // 2) on trie sur le nom if (x.nom < y.nom) return true; if (x.nom > y.nom) return false; // 3) on trie sur le prénom if (x.prenom < y.prenom) return true; if (x.prenom > y.prenom) return false; // 4) on compare un élève à lui-même donc on n'autorise // son insertion qu'une seule fois en retournant false // en cas d'égalité return false; } }; int main(){ const eleve_t e1("luke","lucky",18), e2("dalton","joe",8), e3("dalton","averell",2), e4("james","jessy",10); typedef std::set<eleve_t,sort_eleve_by_note> eleves_t; eleves_t eleves; eleves.insert(e1); eleves.insert(e2); eleves.insert(e3); eleves.insert(e4); // Afficher les élèves { eleves_t::const_iterator eleves_it (eleves.begin()), eleves_end(eleves.end()); for(;eleves_it!=eleves_end;++eleves_it){ std::cout << *eleves_it << std::endl; } } return 0; }
Comme tu le vois la relation d'ordre entre les différents élèves est implémentées au niveau du foncteur sorty_by_notes et peut être facilement modifié. À l'exécution on obtient :
nom: averell prenom: dalton moyenne: 2 nom: joe prenom: dalton moyenne: 8 nom: jessy prenom: james moyenne: 10 nom: lucky prenom: luke moyenne: 18Bonne chance