Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2416 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  classement --> comment faire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

classement --> comment faire

n°709988
john8585
Posté le 27-04-2004 à 17:14:14  profilanswer
 

Bonjour,  
je suis étudiant à la rochelle en DUT info et j'avais a presenter pour avant les vacances un programme qui en fonction des resultats de matchs de football que l'on rentrait, pouvait nous donner le classement des buteuses et le classement general.
 
Seulement pour le classement general, la methode est la suivante j'ai une multimpap de la forme multimap<int, pair<string,Equipe> > ou l'entier est le nombre de points de l'equipe, le string le nom de l'equipe et Equipe une instance d'equipe.
Actuellement le programme fait une itération sur la map et affiche une equipe dans le classement lorsque le nombre de points de celle ci(l'entier) est égal a un nombre que je décremente au fur et a mesure.
 
Seulement avec cette méthode si 2 équipe ont le meme nombre de points, aucune distinction n'est faite hors dans la réalité le classement regarde des attributs des equipes (la difference de but des equipes) et les classes en fonction de cela , je cheche donc comment pourrais je introduire cette verification dans mon iteration Merci.
 
PS : je ne sais pas si c'est tres clair j'ai encore du mal a expliquer aux autres ce que je programme donc si vous avez des questions n'hésitez pas.
 
voila ce qui se passe actuellement :  
 
je orecise que terminal est une classe qui nous a ete fourni par les profs de l'IUT, en gros elle remplace cout et cin  

Code :
  1. void ClassementEquipes::afficherClassementEquipesDOM()
  2. {
  3. std::ifstream feClEquipes(Configuration().ficClassementEquipesA().c_str());
  4. chargerMultimap(feClEquipes);
  5. std::multimap<int,std::pair<std::string,Equipe> >::const_iterator itDOM;
  6. int pos=1;
  7. terminal.afficheMessage("\n \t \t \t \t \t \t  Classement a Domicile \n \n " );
  8. terminal.afficheMessage("\t \t \t        POS -  Equipe \t \tPts \t \t MG \t \tMN \t \tMP \t \tBM \t \tBP \t \tDif \n", false);
  9. terminal.afficheMessage("\t \t \t       \
  10. -----------------------------------------------------------------------------------------------------------------------------" );
  11. for( int b=88 ; b>=0 ; b=b-1)
  12. {
  13.      for(itDOM=MultimapClassEquipes.begin();itDOM!=MultimapClassEquipes.end();itDOM++)
  14. {
  15. if((*itDOM).second.second.nbPointsEquipeDOMA()==b)
  16. {
  17. terminal.afficheMessage("\t \t \t \t ",false);
  18. terminal.afficheInt(pos,false);
  19. terminal.afficheMessage("  -  ", false);
  20. terminal.afficheMessage((*itDOM).second.first, false);
  21. terminal.afficheMessage("\t \t", false);
  22. terminal.afficheInt((*itDOM).second.second.nbPointsEquipeDOMA(),false);
  23. terminal.afficheMessage("   \t \t ",false);
  24. terminal.afficheInt((*itDOM).second.second.nbMatchsGagnesDOMA(),false);
  25. terminal.afficheMessage(" \t \t",false);
  26. terminal.afficheInt((*itDOM).second.second.nbMatchsNulsDOMA(),false);
  27. terminal.afficheMessage("  \t \t",false);
  28. terminal.afficheInt((*itDOM).second.second.nbMatchsPerdusDOMA(),false);
  29. terminal.afficheMessage("  \t \t",false);
  30. terminal.afficheInt((*itDOM).second.second.nbbutsMisDOMA(),false);
  31. terminal.afficheMessage("  \t \t",false);
  32. terminal.afficheInt((*itDOM).second.second.nbbutsPrisDOMA(),false);
  33. terminal.afficheMessage("  \t \t",false);
  34. terminal.afficheInt((*itDOM).second.second.difButsDOMA(),false);
  35. terminal.afficheMessage("  \n" );
  36. pos++;
  37. }
  38. }
  39. }
  40. }


 
voila ce que je voudrais mais a mon avis ce que je suis en trainde faire est pas la bonne methode  

Code :
  1. void ClassementEquipes::afficherClassementEquipes()
  2. {
  3. std::ifstream feClEquipes(Configuration().ficClassementEquipesA().c_str());
  4. chargerMultimap(feClEquipes);
  5. std::multimap<int,std::pair<std::string,Equipe> >::const_iterator it;
  6. std::multimap<int,std::pair<std::string,Equipe> >::const_iterator it2;
  7. int pos=1;
  8. terminal.afficheMessage("\n \t \t \t \t \t \t  Classement a Domicile \n \n " );
  9. terminal.afficheMessage("\t \t \t        POS -  Equipe \t \tPts \t \t MG \t \tMN \t \tMP \t \tBM \t \tBP \t \tDif \n", false);
  10. terminal.afficheMessage("\t \t \t       \
  11. -----------------------------------------------------------------------------------------------------------------------------" );
  12. for( int b=88 ; b>=0 ; b=b-1)
  13. {
  14.      for(it=MultimapClassEquipes.begin();it!=MultimapClassEquipes.end();it++)
  15. {
  16. if((*it).second.second.nbPointsEquipeA()==b)
  17. {
  18.  for(it2=MultimapClassEquipes.begin();it2!=MultimapClassEquipes.end();it2++)
  19.  {
  20.   if((*it2).second.second.nbPointsEquipeA()==b && ((*it2).second.first)!=((*it).second.first) )
  21.    {
  22.    //il y a des egalites
  23.    //departageDifButs();
  24.    }
  25.   else
  26.   {
  27.   terminal.afficheMessage("\t \t \t \t ",false);
  28.   terminal.afficheInt(pos,false);
  29.   terminal.afficheMessage("  -  ", false);
  30.   terminal.afficheMessage((*it).second.first, false);
  31.   terminal.afficheMessage("\t \t", false);
  32.   terminal.afficheInt((*it).second.second.nbPointsEquipeA(),false);
  33.   terminal.afficheMessage("   \t \t ",false);
  34.   terminal.afficheInt((*it).second.second.nbMatchsGagnesA(),false);
  35.   terminal.afficheMessage(" \t \t",false);
  36.   terminal.afficheInt((*it).second.second.nbMatchsNulsA(),false);
  37.   terminal.afficheMessage("  \t \t",false);
  38.   terminal.afficheInt((*it).second.second.nbMatchsPerdusA(),false);
  39.   terminal.afficheMessage("  \t \t",false);
  40.   terminal.afficheInt((*it).second.second.nbbutsMisA(),false);
  41.   terminal.afficheMessage("  \t \t",false);
  42.   terminal.afficheInt((*it).second.second.nbbutsPrisA(),false);
  43.   terminal.afficheMessage("  \t \t",false);
  44.   terminal.afficheInt((*it).second.second.difButsA(),false);
  45.   terminal.afficheMessage("  \n" );
  46.   pos++;}
  47.  }
  48. }
  49. else
  50. {
  51. }
  52. }
  53. }
  54. }


Message édité par john8585 le 27-04-2004 à 17:40:11
mood
Publicité
Posté le 27-04-2004 à 17:14:14  profilanswer
 

n°710059
john8585
Posté le 27-04-2004 à 17:41:29  profilanswer
 

voila avec le code c'est peut etre plus clair

n°710086
Joel F
Real men use unique_ptr
Posté le 27-04-2004 à 18:07:43  profilanswer
 

je crois qu'il faut que tu definisse une operateur de tri pour ta classe Equipe qui gere ce cas, et insatncier ta multimap en utilisant cette operateur.

n°710095
john8585
Posté le 27-04-2004 à 18:13:16  profilanswer
 

joel f a écrit :

je crois qu'il faut que tu definisse une operateur de tri pour ta classe Equipe qui gere ce cas, et insatncier ta multimap en utilisant cette operateur.


Comme je l'ai dit je débute, premiere année de DUT donc si tu pouvais m'expliquer ce qu'est un opérateur de tri et comment ca marche ca serait cool.
Merci

n°710130
bjone
Insert booze to continue
Posté le 27-04-2004 à 18:55:24  profilanswer
 

personnellement, je mettres les points et le nom en tant que membres de la classe Equipe.
 
le tout maintenu dans un vector<Equipe>, et ton operator < qui prends en compte les points, et les autres attributs...

n°710168
Joel F
Real men use unique_ptr
Posté le 27-04-2004 à 19:45:28  profilanswer
 

les containers de la STL fournissent un argument template qui est l'operateur de comparaison sur les éléements ou dans ton cas sur les clés du container.
 
On peut définir un FONCTEUR, à savoir une classe fournissant une surcharge de l'opérateur() pour redefinir l'ordre sur différents éléments.
 
Le plus simple pour toi serait de stocket tout dans un vector<> et d'utiliser un foncteur qui tri tout selon l'ensemble de tes critéres.
 
Quelques Liens en vrac :
http://casteyde.christian.free.fr/ [...] x5263.html
http://casteyde.christian.free.fr/ [...] x8791.html
http://forum.hardware.fr/hardwaref [...] 5677-1.htm
http://docs.mandragor.org/files/Pr [...] c8899.html


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  classement --> comment faire

 

Sujets relatifs
algorithme de classement alphabétique[MySQL] une requête avec "double classement": possible??
[mysql] comment faire ce classement ?[PHP/MySQL ] Classement par lettre
Script classement pour GSM[PHP] classement par date puis heure...
Plus de sujets relatifs à : classement --> comment faire


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)