Ranger les eleve grace o moyenne c/c++
Bonjour,
J'aimerais si possible que quelqu'un m'aide à trouver un site ou je pourrais trouver des codes ecrit en c/c++ sur le calcul des moyennes et surtout la gestion des rang des eleves en fonction de leurs moyennes.
je vous remercies tous d'avance en prians pour les votre et vous ,vous vous portez bien.
J'aimerais si possible que quelqu'un m'aide à trouver un site ou je pourrais trouver des codes ecrit en c/c++ sur le calcul des moyennes et surtout la gestion des rang des eleves en fonction de leurs moyennes.
je vous remercies tous d'avance en prians pour les votre et vous ,vous vous portez bien.
Configuration: Windows XP Internet Explorer 7.0
1 réponse
-
Le plus simple c'est d'utiliser un std::set et de redéfinir un foncteur pour ordonner les éléments. Exemple :
#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: 18
Bonne chance