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.
A voir également:
- Ranger les eleve grace o moyenne c/c++
- Excel moyenne - Guide
- O&o shutup10 - Télécharger - Confidentialité
- O&o defrag - Télécharger - Optimisation
- Que veut dire o ✓ - Forum Mail
- Ranger par ordre alphabétique excel - Guide
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 :
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