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

  FORUM HardWare.fr
  Programmation
  C++

  Projet iut info

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Projet iut info

n°672631
john8585
Posté le 13-03-2004 à 10:56:06  profilanswer
 

Voila comme vous l'avez certainemt compris j'ai actuellement un projet de programmation à réalisé, Mais dans celui ci quelque chose me choque je n'ai aucun pb à la compilation ms plusieurs pb lors de l'utilisation du logiciel.
entre autre :  
- Un destructeur appellé une dizaine de fois lors du retour au menu
- Une vérification ds une map qui marche une fois ur 2 ...
 
J'aimerais donc avoir quelques conseils de votre part mais je n'ai nul part ou loger mon projet.
Une idée ?
 
Merci d'avance

mood
Publicité
Posté le 13-03-2004 à 10:56:06  profilanswer
 

n°672646
Evadream -​jbd-
Posté le 13-03-2004 à 11:27:53  profilanswer
 

Peut-être en postant un peu de code (celui du menu par exemple), tu auras plus de réponses :)
 
@+

n°672653
john8585
Posté le 13-03-2004 à 11:38:23  profilanswer
 

voila mon menu mais tt seul c assez desuet il manque plein de fichier  

Code :
  1. #include "Dialogue.h"
  2. #include <string>
  3. #include "Terminal.h"
  4. #include "Match.h"
  5. #include "LesEquipes.h"
  6. #include "LesButeuses.h"
  7. Dialogue::Dialogue()
  8. :sesEquipes(LesEquipes())
  9. ,sesButeuses(LesButeuses())
  10. {}
  11. void Dialogue::menu()
  12. {
  13. terminal.afficheMessage("---Menu Principal---" );
  14. terminal.afficheMessage("1) Saisir les resultats d'un match." );
  15. terminal.afficheMessage("2) Voir les donnees d'un match." );
  16. terminal.afficheMessage("3) Voir le classement des buteuses." );
  17. terminal.afficheMessage("4) Voir le classement general." );
  18. terminal.afficheMessage("5) Quitter" );
  19. int a=terminal.demandeInt("Que voulez vous faire : (1,2,3,4 ou 5) ?" );
  20. switch(a)
  21. {
  22.  case 1:
  23.   cas1();
  24.   break;
  25.  case 2:
  26.   cas2();
  27.   break;
  28.  case 3:
  29.   cas3();
  30.   break;
  31.  case 4:
  32.   cas4();
  33.   break;
  34.  case 5:
  35.   break;
  36.  default:
  37.   menu();
  38.   break;
  39. }
  40. return;
  41. }
  42. void Dialogue::cas1()
  43. {
  44. Match unMatch;
  45. unMatch.saisieDonneesMatch();
  46. return;
  47. }
  48. void Dialogue::cas2()
  49. {
  50. Match unMatch;
  51. unMatch.afficherDonneesMatch();
  52. return;
  53. }
  54. void Dialogue::cas3()
  55. {
  56. return;
  57. }
  58. void Dialogue::cas4()
  59. {
  60. return;
  61. }


Message édité par john8585 le 13-03-2004 à 14:12:03
n°672657
Evadream -​jbd-
Posté le 13-03-2004 à 11:42:16  profilanswer
 

Code :
  1. #include "Dialogue.h"
  2. #include <string>
  3. #include "Terminal.h"
  4. #include "Match.h"
  5. #include "LesEquipes.h"
  6. #include "LesButeuses.h"
  7. Dialogue: Dialogue()
  8. :sesEquipes(LesEquipes())
  9. ,sesButeuses(LesButeuses())
  10. {}
  11. void Dialogue::menu()
  12. {
  13. terminal.afficheMessage("---Menu Principal---" );
  14. terminal.afficheMessage("1) Saisir les resultats d'un match." );
  15. terminal.afficheMessage("2) Voir les donnees d'un match." );
  16. terminal.afficheMessage("3) Voir le classement des buteuses." );
  17. terminal.afficheMessage("4) Voir le classement general." );
  18. terminal.afficheMessage("5) Quitter" ); 
  19. int a=terminal.demandeInt("Que voulez vous faire : (1,2,3,4 ou 5) ?" );
  20. switch(a)
  21. {
  22.   case 1:
  23.    cas1();
  24.    break;
  25.   case 2:
  26.    cas2(); 
  27.    break;
  28.   case 3:
  29.    cas3(); 
  30.    break;
  31.   case 4:
  32.    cas4(); 
  33.    break;
  34.   case 5:
  35.    break;
  36.   default:
  37.    menu();
  38.    break;
  39. }
  40. return;
  41. }
  42. void Dialogue::cas1()
  43. {
  44. Match unMatch;
  45. unMatch.saisieDonneesMatch();
  46. return;
  47. }
  48. void Dialogue::cas2()
  49. {
  50. Match unMatch;
  51. unMatch.afficherDonneesMatch();
  52. return;
  53. }
  54. void Dialogue::cas3()
  55. {
  56. return;
  57. }
  58. void Dialogue::cas4()
  59. {
  60. return;
  61. }


Message édité par Evadream -jbd- le 13-03-2004 à 11:43:47
n°672662
Evadream -​jbd-
Posté le 13-03-2004 à 11:47:47  profilanswer
 

Code :
  1. {
  2. Match unMatch;
  3. unMatch.saisieDonneesMatch();
  4. return;
  5. }


 
Tu créees un "Match" (appel au constructeur), mais dès que tu sors de la fonction, l'objet est détruit, il y a donc un appel au destructeur, rien d'anormal.
 
Tu devrais poster encore un peu plus de code, et dire exactement ce qui ne va pas (genre quel est le destructeur appelé 10 fois etc...)
 
@+

n°672663
john8585
Posté le 13-03-2004 à 11:50:25  profilanswer
 

bon je vous montre ce qui se passe lors de la saisie d'1 nveau match :  

Code :
  1. void Match::saisieDonneesMatch()
  2. {
  3. eqDom=saisieEquipe(true);
  4. while (!eqDom.empty())
  5. {
  6.  if (sesEquipes.existeEquipe(eqDom))
  7.  {
  8.   eqExt=saisieEquipe(false);
  9.   while (!eqExt.empty())
  10.   {
  11.    if (sesEquipes.existeEquipe(eqExt) && eqExt!=eqDom)
  12.    {
  13.    scoreEquipeDom=saisieScore(true);
  14.    buteusesDomicile=mapButeusesMatch(scoreEquipeDom, true);
  15.    scoreEquipeExt=saisieScore(false);
  16.    buteusesExterieur=mapButeusesMatch(scoreEquipeExt,false);
  17.    Match m1(scoreEquipeDom, scoreEquipeExt, buteusesDomicile, buteusesExterieur);
  18.    std::pair<std::string, std::string> p1(eqDom, eqExt);
  19.    std::pair<std::pair<std::string, std::string>, Match> p2(p1, m1);
  20.    LesMatchs().sauverMatch(p2);
  21.    terminal.afficheMessage("MAP Sauvee on passe a la suite !!!!! !!" );
  22.    eqExt="";
  23.    //..Verif insertion et message de bon fonctionnemt
  24.    }
  25.    else
  26.    terminal.afficheMessage("Entrez une Equipe existante ou differente de \
  27. la premiere" );
  28.    eqExt="";
  29.   }
  30.  }
  31.  else
  32.  terminal.afficheMessage("Entrez une Equipe existante " );
  33. eqDom="";
  34. }
  35. Dialogue dialogue;
  36. dialogue.menu();
  37. }


Code :
  1. Match::Match(int scoreDom, int scoreExt,
  2.  std::map<std::string,Buteuse> & buteusesDom,
  3.  std::map<std::string,Buteuse> & buteusesExt)
  4. :scoreEquipeDom(scoreDom)
  5. ,scoreEquipeExt(scoreExt)
  6. ,buteusesDomicile(buteusesDom)
  7. ,buteusesExterieur(buteusesExt)
  8. {}
  9. Match::Match()
  10. :sesEquipes(LesEquipes())
  11. ,sesButeuses(LesButeuses())
  12. ,scoreEquipeDom(0)
  13. ,scoreEquipeExt(0)
  14. {
  15. //sonClassementEquipes.chargerMultimap(feClassEq);
  16. //sonClassementButeuses.chargerMultimap(feClassBut);
  17. }
  18. Match::~Match()
  19. {
  20. //Configuration uneConf;  
  21. //sonClassementEquipes.chargerMultimap(feClassEq);
  22. //sonClassementButeuses.chargerMultimap(feClassBut);
  23. }


 
desole je connaissais pas ces balises ms sinon des id ?


Message édité par john8585 le 13-03-2004 à 14:04:49
n°672715
Evadream -​jbd-
Posté le 13-03-2004 à 13:06:03  profilanswer
 

Utilises les balises "[ cpp ] / [ /cpp ]" ;)


Message édité par Evadream -jbd- le 13-03-2004 à 13:06:16
n°672990
john8585
Posté le 13-03-2004 à 21:31:17  profilanswer
 

vraimt pas d'idée bon ben tt pis je suis reparti pour quelques heures de galeres

n°673027
HelloWorld
Salut tout le monde!
Posté le 13-03-2004 à 23:23:00  profilanswer
 

Citation :


void Match::saisieDonneesMatch()  
{  
eqDom=saisieEquipe(true);  
while (!eqDom.empty())  
{  
    if (sesEquipes.existeEquipe(eqDom))  
    {  
         eqExt=saisieEquipe(false);  
         while (!eqExt.empty())  
         {  
             [...]
             eqExt="";  
         }  
    }  
    else  
        terminal.afficheMessage("Entrez une Equipe existante " );  
    eqDom="";  
}  
Dialogue dialogue;  
dialogue.menu();
   
}  
 
void Dialogue::cas1()  
{  
   Match unMatch;  
    unMatch.saisieDonneesMatch();

    return;  
}  


Soit j'ai mal compris, soit le code en bleu mérite d'être repris.
Apparement y'a aussi une référence croisée entre Match et Dialogue. Les ref croisées c'est mal. Tu empiles des contructions de Match et Dialogue tant que t'es dans des casX() (au passage vire les return;) et une fois fini hop ça doit dépiler et se détruire.
Si ton main ressemble à ça :

Code :
  1. Dialogue dialogue;
  2. dialogue.menu();


et que tu entres 1) et 2) ça fait :

Code :
  1. int main()
  2. {
  3. Dialogue dialogue; // creation Dialogue
  4. dialogue.menu();
  5.     void Dialogue::cas1()
  6.     {
  7.         Match unMatch; // creation Match
  8.         unMatch.saisieDonneesMatch();
  9.             void Match::saisieDonneesMatch()
  10.             {
  11.                 [...]
  12.                 Dialogue dialogue; // creation Dialogue
  13.                 dialogue.menu(); 
  14.                     void Dialogue::cas2()
  15.                     {
  16.                         Match unMatch; // creation Match
  17.                         unMatch.saisieDonneesMatch();
  18.                         // 5) Quitter
  19.                     } // destruction Match
  20.             } // destruction Dialogue
  21.          } // destruction Match
  22.     }
  23. } // destruction Dialogue


Mets ton truc sur papier, dessine ton diagramme des classes et recommence ton truc, car ton design + ton code est assez, hum, merdique.
Par exemple, dans Dialogue::menu, tu ne fais rien puisque tu travailles avec des var locales.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°673122
john8585
Posté le 14-03-2004 à 11:51:06  profilanswer
 

En fait pour le moment je ne fait que le cas 1 car j'ai de celui ci pour mettre en place les cas d'utilisations suivants donc je ne construit qu'un match mais effectivement je ferais peut etre mieux de construire le match une fois pour toute dans le constructeur de Dialogue
 
PS : désolé pr le style texto c une mauvaise habitude mais c'est corrigé


Message édité par john8585 le 15-03-2004 à 09:57:24
mood
Publicité
Posté le 14-03-2004 à 11:51:06  profilanswer
 

n°673285
HelloWorld
Salut tout le monde!
Posté le 14-03-2004 à 17:18:09  profilanswer
 

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

  Projet iut info

 

Sujets relatifs
PROJET INFO BTS.. ca arrive...projet info -> circuits électroniques (en C)
programmeur, analyste, chef de projet, chef de centre info ?[C++] Projet Info pb de bibliotheque
recherche votre avis sur 2 pitites questions projet infoprojet en info
projet d'info en bac+2cherche jeux en C pour mon projet info
Cherche idée sujet pour un projet de 2e année DUT InfoJEUNE ETUDIANT DONT LE PROJET INFO EST BLOQUE !!!!! HELP
Plus de sujets relatifs à : Projet iut info


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR