[LCP] Interro 2 2009-2010

Voir le sujet précédent Voir le sujet suivant Aller en bas

[LCP] Interro 2 2009-2010

Message  Aladin le Jeu 29 Déc 2011, 13:46

Bonjour Very Happy,

J'ai commencé l'interro des Gestion 2009-2010 sur les Horaires, et j'ai deux soucis :

1) Avec la méthode concerne() = une méthode concerne qui retourne un bool et vérifie si l'attribution en question
concerne le groupe passé en argument (ce groupe notamment et pas exclusivement) ;
==> Je ne comprends pas ce qu'il faut vérifier puisqu'on donne le code en argument. (quel code et quel attribution faut-il donc vérifier?)

2) Episode 2 a):
==> Je ne vois pas comment accéder à chaque attribution donner par void * getSeqAttrib (int * adrInt) afin de remplir mon tableau d'attribution.
Et dans ma classe Attributions les attributs sont différents de ceux donner par chaque attribution de la méthode void * getSeqAttrib (int * adrInt)

Merci Smile

Aladin

Nombre de messages : 13
Prénom : Alaaedine
Date d'inscription : 14/05/2011

Revenir en haut Aller en bas

Re: [LCP] Interro 2 2009-2010

Message  smb le Jeu 29 Déc 2011, 16:53

Aladin a écrit:Bonjour Very Happy,

J'ai commencé l'interro des Gestion 2009-2010 sur les Horaires,
Bonne idée.

Aladin a écrit:et j'ai deux soucis :

1) Avec la méthode concerne() = une méthode concerne qui retourne un bool et vérifie si l'attribution en question
concerne le groupe passé en argument (ce groupe notamment et pas exclusivement) ;
==> Je ne comprends pas ce qu'il faut vérifier puisqu'on donne le code en argument. (quel code et quel attribution faut-il donc vérifier?)
Relis bien Outils.h (enum Groupe) et relis bien l'énoncé et l'exemple qui est donné !

Aladin a écrit:

2) Episode 2 a):
==> Je ne vois pas comment accéder à chaque attribution donner par void * getSeqAttrib (int * adrInt) afin de remplir mon tableau d'attribution.
Et dans ma classe Attributions les attributs sont différents de ceux donner par chaque attribution de la méthode void * getSeqAttrib (int * adrInt)
Relis bien l'énoncé !
Il ne faut pas confondre la zone attribution que tu dois parcourir et les objets "Attribution" que tu dois instancier !

Aladin a écrit:Merci Smile
De rien.

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [LCP] Interro 2 2009-2010

Message  Aladin le Sam 31 Déc 2011, 14:01

Merci pour vos réponses.

J'ai réglé le problème 2.
Mais la méthode concerne() je ne vois toujours pas comment vérifier dans mon tableau dynamique que le groupe en paramètre
corresponde aux codes puisque chaque code peut lui même représenter plusieurs groupes??? Suspect

Assez bizarre ... pale

Aladin

Nombre de messages : 13
Prénom : Alaaedine
Date d'inscription : 14/05/2011

Revenir en haut Aller en bas

Re: [LCP] Interro 2 2009-2010

Message  smb le Sam 31 Déc 2011, 19:25

Aladin a écrit:Merci pour vos réponses.

J'ai réglé le problème 2.
Mais la méthode concerne() je ne vois toujours pas comment vérifier dans mon tableau dynamique que le groupe en paramètre
corresponde aux codes puisque chaque code peut lui même représenter plusieurs groupes??? Suspect

Assez bizarre ... pale

L'énoncé dit :

-une méthode concerne qui retourne un bool et vérifie si l'attribution en question
concerne le groupe passé en argument (ce groupe notamment et pas exclusivement) ;


Relis dans l'énoncé la signification du "code" groupe ainsi que l'exemple et fais bien la distinction entre "code" groupe et enum Groupe !

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [LCP] Interro 2 2009-2010

Message  I.AM.BACK le Lun 02 Jan 2012, 15:51

Aladin a écrit:
...puisque chaque code peut lui même représenter plusieurs groupes....

Justement comme chaque code peut représenter plusieurs groupes, tu dois vérifier si le groupe demandé fait partie des groupes de ce code, c'est ce que moi j'ai compris Razz
Et pour le raisonnement, pense aux opérateurs de comparaison binaires.

I.AM.BACK

Nombre de messages : 56
Age : 25
Prénom : Victor
Statut : étudiant indu 2ème année
Localisation : http://en.wikipedia.org/wiki/Armenia
Date d'inscription : 21/07/2011

Revenir en haut Aller en bas

Re: [LCP] Interro 2 2009-2010

Message  didi le Lun 02 Jan 2012, 21:49

bonsoir Smile

je fais cet interro et j'arrive à parcourir le zone et trier
mais j'ai 2 problems .. Sad


1)
nombre de séquences sans

j'ai un entier cpt pour compter le nombre de séquences avec rien
à cette instruction cpt++;
Code:

#include <iostream>
#include <algorithm>
#include "Outils.h"
#include <vector>
#include <sstream>
#include "Attribution.h"
using namespace std;

int main() {
   ostringstream oss;
   int nb;
   void *ptr_g = getSeqAttrib(&nb);
   cout << "Le nombre d'attribution sont : " << nb;
   vector<Attribution> tab = vector<Attribution>();
   unsigned short *ptr_ush;
   unsigned char code,*ptr_uc;
   string cour ="", prof ="",local ="";
   int hr,ind=0,ind2;
   int cpt=0;
   float **suiv ,*ptr_f,nbAtt;
   char *ptr_c;
   *suiv = (float*)ptr_g;
   Attribution *horraire[9][5] ;
   for(int i=0; i< nb; i++)   {
      ptr_f = *suiv;
      nbAtt = *ptr_f;
      cout << "\nLe nombre d'attribution sont : " << nbAtt << endl;
      ptr_f++;
      ptr_c = (char*) ptr_f;
      if(nbAtt == 0)
         cpt++;  // ici j'arrive pas faire ++ (une erreur d'execution


      for(float j= 0; j < nbAtt; j++)   {
         cour ="";
         prof ="";
         local ="";
         ptr_uc = (unsigned char*)ptr_c;
         code = (unsigned short)*ptr_uc;
         ptr_uc++;
         ptr_c = (char*)ptr_uc;
         for(int k=0;k <3;k++)
            cour += *(ptr_c++);
         for(int k=0;k <3;k++)
            prof +=  *(ptr_c++);
         hr = *ptr_c;
         ptr_c++;
         ptr_ush = (unsigned short*)ptr_c;
         oss << *ptr_ush;
         local = oss.str();
         oss.str("");
         ptr_ush++;
         ptr_c = (char*) ptr_ush;
         tab.push_back(Attribution(code,cour,prof,hr,local));
         cout << tab[ind].toStringL();
         ind++;

      }
      suiv = (float**)ptr_c;
   }
   cout << "\nLe nombre d'elements vide sont : " << cpt << endl;
   cout << "\nLe nombre d'elements de tab sont : " << tab.size() << endl;

   std::sort(tab.begin(),tab.end());

   vector<Attribution>::iterator dep ;
   vector<Attribution>::iterator fin = tab.end();
   cout << "\n\n\n================== Apres le tri ======================\n\n\n";
   cout << "\tCODE \tCOURS \tPROF \tHEURS \tLOCALE\n";
   cout << "=============================================================\n";
   for(dep = tab.begin() ; dep < fin; dep++)   {
      cout << (*dep).toStringL();
   }
   cout << "=============================================================\n";

   for(dep = tab.begin(); dep < fin; dep++)   {
      ind = (*dep).getHeur()/5;
      ind2 = (*dep).getHeur()%5;
      *(horraire[ind][ind2]) = *dep;

   }


   for(int i=0; i < 9; i++)   {
      for(int j=0; j < 5; j++)   {
      //   cout << (*horraire[i][j]).toStringL();
      }
   }
   return 0;
}


et la
2) une erreur d'éxecution pour *horraire[9][5]
à cette ligne *(horraire[ind][ind2]) = *dep;

Code:
for(dep = tab.begin(); dep < fin; dep++)   {
      ind = (*dep).getHeur()/5;
      ind2 = (*dep).getHeur()%5;
      *(horraire[ind][ind2]) = *dep;

   }

merci d'avance

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: [LCP] Interro 2 2009-2010

Message  smb le Lun 02 Jan 2012, 23:05

Sans voir les fichiers Attributions.h et Attributions.cpp cela relève de la magie.

Mais bon, comme le dirait Terminatour, le c++ c'est un peu de la magie : on va donc essayer !

Code:
Attribution *horraire[9][5] ;

Le tableau horraire est bien un tableau de pointeurs d'Attribution ...

... et je ne vois nulle part dans le code de new qui pourrait garnir les éléments de ce tableau !

La magie a des limites Wink




smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [LCP] Interro 2 2009-2010

Message  didi le Lun 02 Jan 2012, 23:38

je viend de corriger ( pas sur Smile)
Code:

for(dep = tab.begin(); dep < fin; dep++)   {
      ind = (*dep).getHeur()/5;
      ind2 = (*dep).getHeur()%5;
      horraire[ind][ind2] = new Attribution((*dep).getCode(),(*dep).getCours(),(*dep).getProf(),(*dep).getHeur(),(*dep).getLocal());

   }




Attribution.h

Code:
/*
 
#ifndef ATTRIBUTION_H_
#define ATTRIBUTION_H_
#include <string>


class Attribution {
private :
      unsigned short code;
      std::string cours;
      std::string prof;
      int heur;
      std::string local;

public :
      Attribution(unsigned short cd=1,std::string cr="SYS",std::string="JCJ",int hr=1,std::string="003");
      Attribution(const Attribution &a);
      int getHeur()const{return heur;};
      std::string getCours()const{return cours;};
      std::string getProf()const{return prof;};
      std::string getLocal()const{return local;};
      unsigned short getCode(){return code;};
      Attribution& operator=(const Attribution& a);
      bool concerne(Attribution& a,std::string gr);
      bool operator<(const Attribution &d) const;
      std::string toStringL();
};

Attribution.cpp
Code:


#include "Attribution.h"
#include "Outils.h"
#include <string>
#include <sstream>
#include <iomanip>
using namespace std;


Attribution::Attribution(unsigned short cd,string cr,string pr,int hr,string lc)
                     :code(cd),cours(cr),prof(pr),heur(hr),local(lc){}


Attribution::Attribution(const Attribution &a)   {
   if(this != &a)   {
      this->code = a.code;
      this->cours = a.cours;
      this->prof =a.prof;
      this->heur = a.heur;
      this->local = a.local;
   }

}

Attribution& Attribution::operator=(const Attribution& a)   {

   if(this != &a)   {
         this->code = a.code;
         this->cours = a.cours;
         this->prof =a.prof;
         this->heur = a.heur;
         this->local = a.local;
      }
   return *this;

}

bool Attribution::concerne(Attribution& a,string gr)   {
   bool res = false;
   unsigned short cd;
   istringstream iss(gr);
   iss >> cd;

   if(a.code == cd)   {
      res = true;
   }
   return res;
}


string Attribution::toStringL()   {
   ostringstream oss;
   string res;

   oss <<"\t" << setfill('0')<<  setw (3)<< this->code << "\t" << this->cours <<"\t" <<
         this->prof << "\t" << setfill('0')<<  setw (2) << this->heur << "\t"  << setfill('0')<<  setw (3) << this->local << "\n" ;
   res = oss.str();

   return res;
}

bool Attribution::operator<(const Attribution &a) const   {
   bool res = true;
   if((this->cours > a.cours) || (this->cours == a.cours && this->prof > a.prof)
      || ( (this->cours == a.cours && this->prof == a.prof) && this->code > a.code)
      || (( (this->cours == a.cours && this->prof == a.prof) && this->code == a.code) && this->heur > a.heur))   {
      res = false;
   }

   return res;


}






#endif /* ATTRIBUTION_H_ */[/code]

Maintenant erreur d'execution ... Sad à la ligne

horraire[ind][ind2] = new Attribution((*dep).getCode(),(*dep).getCours(),(*dep).getProf(),(*dep).getHeur(),(*dep).getLocal());

Sad

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

Re: [LCP] Interro 2 2009-2010

Message  smb le Mar 03 Jan 2012, 08:03

didi a écrit:je viend de corriger ( pas sur Smile)
Code:

for(dep = tab.begin(); dep < fin; dep++)   {
      ind = (*dep).getHeur()/5;
      ind2 = (*dep).getHeur()%5;
      horraire[ind][ind2] = new Attribution((*dep).getCode(),(*dep).getCours(),(*dep).getProf(),(*dep).getHeur(),(*dep).getLocal());

   }


Maintenant erreur d'execution ... Sad à la ligne

horraire[ind][ind2] = new Attribution((*dep).getCode(),(*dep).getCours(),(*dep).getProf(),(*dep).getHeur(),(*dep).getLocal());

Sad

Es-tu certain que c'est à cette ligne qu'il y a une erreur ? On ne sait plus où tu en es dans tes corrections !

J'ai repris ton code, corrigé dans la première partie le passage d'une séquence à l'autre, et ... je n'ai pas d'erreur à la ligne que tu donnes .

Par contre, comme il n'y a pas nécessairement une attribution dans chaque élément de ton tableau horraire, tu dois prendre des précautions lors de l'affichage de ce tableau !

De plus, tu dois remplir ce tableau avec des attributions qui concernent un seul groupe !

Enfin, on peut se passer de faire des new si on met dans horraire des adresses d'attributions existantes de tab !

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Re: [LCP] Interro 2 2009-2010

Message  Contenu sponsorisé Aujourd'hui à 10:54


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum