help classe auto référentielle ( chainage d'objets )

help classe auto référentielle ( chainage d'objets ) - C++ - Programmation

Marsh Posté le 28-10-2004 à 14:54:50    

bonjour a tous
alors voila je débute en c++
et voila que mon prof nous donne seulement 2 jours pour faire cet exercice....côté.
 
nous avons réalisés l'uml et en fait ce que je ne sais pas faire
c'est enchainer 100 objets chacun contenant un *ptrSuivant      qui pointe vers l'objet suivant.
 
voila j'aimerais une aide détaillée(voire le code) si possible merci à tous


Message édité par fullnight le 16-12-2004 à 15:41:45
Reply

Marsh Posté le 28-10-2004 à 14:54:50   

Reply

Marsh Posté le 28-10-2004 à 14:59:28    

Tu rémunères combien pour qu'on fasse ton boulot à ta place ?

Reply

Marsh Posté le 28-10-2004 à 15:01:59    

je demande pas de faire le boulot à ma place !
 
j'ai déja tout préparé dans mon code  
il me manque seulement une aide car je ne sais pas comment représenter une liste chainée en c++.
 
ca demande pas bcp je pense que c'est juste un petit service ca se paye ca?

Reply

Marsh Posté le 28-10-2004 à 15:05:47    

Comment représenter une liste chaînée ?
Ca dépend, il y a plusieurs méthodes.  
Si on pouvait jeter un oeil sur ton modèle UML, ça aiderait.
Et puis tu devrais poster ton code pour voir à quel niveau tu bloques.

Reply

Marsh Posté le 28-10-2004 à 15:06:32    

TA GUEULE :o

Reply

Marsh Posté le 28-10-2004 à 15:08:34    

Taz a écrit :

TA GUEULE :o


 
 :pt1cable:

Reply

Marsh Posté le 28-10-2004 à 15:09:51    

Reply

Marsh Posté le 28-10-2004 à 15:11:18    

moi je veux bien mais mon code est composé de 2 fichiers .h et de 3 .cpp
 
et puis le modele uml je fais cmt pour le poster? je le essine dans paint  et je le poste?

Reply

Marsh Posté le 28-10-2004 à 15:12:28    

tu postes rien. tu te mets au taf :o

Reply

Marsh Posté le 28-10-2004 à 15:13:42    

on m'a parlé de classes auto référentielles.
 
j'ai une classe facture qui instancie un objet UneFacture qui possède un *ptrSuivant     qui pointe vers une autre facture du meme type.
 
je ne sais pas trop cmt créer 100 factures sans saturer la mémory.

Reply

Marsh Posté le 28-10-2004 à 15:13:42   

Reply

Marsh Posté le 28-10-2004 à 15:14:22    

il est où le topic des bestof parce que là on en tient un bon

Reply

Marsh Posté le 28-10-2004 à 15:14:29    

et surtout les relier

Reply

Marsh Posté le 28-10-2004 à 15:14:56    

fullnight a écrit :

et surtout les relier

operateur =

Reply

Marsh Posté le 28-10-2004 à 15:17:20    

Poste seulement la déclaration de la classe collection, ça permettra d'avoir une idée sur la méthode mise en oeuvre.

Reply

Marsh Posté le 28-10-2004 à 15:18:06    

Au fait : ignore la pollution de Taz, il ne sait faire que ça.

Reply

Marsh Posté le 28-10-2004 à 15:20:31    

non, je vois juste un topic hors charte, avec un titre irritant et un gus parano qui a pas envie d'en foutre une ramée.

Reply

Marsh Posté le 28-10-2004 à 15:23:26    

j'ai fait une classe Facture
 
ma classe Collection est vide
 
class Facture  
{
 
private:
         int id; //  numero d'identification de la facture.
   Date Datef; // objet de type Date crée.
   float  MontantHTVA; // le montant hors tva.
   Facture *pFactureSuivante; // pointeur du type de la classe elle-même.
public:
 
 Facture();
 virtual ~Facture();
 int getid();  
    Date getDate() ;
    double getMontantHTVA();
 void setid();
 void setDate();
 void setMontantHTVA();
      AjoutFacture();
 
inline friend ostream &operator<< ( ostream &sortie, Facture &UneFacture )
{
   sortie << "\n\n--- Votre facture est ---\n\n"  
       <<"\nreference facture: "<<UneFacture.id  
    <<"\ndate facture: "
          << UneFacture.Datef.jour<<"/"<<UneFacture.Datef.mois<<"/"<<UneFacture.Datef.annee
    <<"\nmontant htva: "
       << UneFacture.MontantHTVA << endl ;
   
 
return sortie;
}
 
inline friend istream &operator>> ( istream &entree, Facture &UneFacture )
{
    cout <<"\nreference facture: ";
    entree >> setw(4) >> UneFacture.id; // entre le numero de la facture.
 cout <<"\ndate facture (JJMMAAAA) : ";
 entree >> UneFacture.Datef.jour >> UneFacture.Datef.mois >> UneFacture.Datef.annee;  
 cout <<"\nmontant HTVA facture: ";
 entree >> setw(5) >> UneFacture.MontantHTVA;   //entre le montant HTVA.
 
 return entree; // permet cin >> a > etc
}
 
};


Message édité par fullnight le 16-12-2004 à 15:42:00
Reply

Marsh Posté le 28-10-2004 à 15:26:44    

c'est ... flou comme model
 
tu voudrais pas séparer l'implementation de la liste de la facture ?

Reply

Marsh Posté le 28-10-2004 à 15:28:11    

ouais, parce que sur ton schéma UML, ça doit apparaître clairement qu'une Collection est associé à * Facture ...

Reply

Marsh Posté le 28-10-2004 à 15:29:57    

Ouip, même si en algo, on le fait souvent (de relier les noeuds entre eux), en C++, on évite :  
 - chaque facture est indépendante, et n'a pas conscience de l'existence des autres factures
 - ta classe Collection gère la liste chaînée de facture.
 
Collection devient alors une simple instanciation de la clase list de la STL avec des pointeurs sur Facture. Et ta classe Facture n'a plus le pointeur vers la Facture suivante.
 
Le lien vers la classe list a déjà été donné par cris56
 
edit: le lien était de cris56, pas de Taz. A mon avis, Taz n'a jamais entendu parler de la STL... :o


Message édité par Lam's le 28-10-2004 à 15:31:06
Reply

Marsh Posté le 28-10-2004 à 15:31:36    

edit : rien  :D


Message édité par cris56 le 28-10-2004 à 15:32:36
Reply

Marsh Posté le 28-10-2004 à 15:32:00    

séparer l'implementation de la liste de la facture ?
bon j'ai mis en rouge ce qui peut permettre un chainage... mais c flou effectivement
 
 
class Facture  
{
 
private:
         int id; //  numero d'identification de la facture.
    Date Datef; // objet de type Date crée.
   float  MontantHTVA; // le montant hors tva.
 Facture *pFactureSuivante; // pointeur du type de la classe elle-même.  
 
public:
  Facture();
 virtual ~Facture();
 int getid();  
    Date getDate() ;
    double getMontantHTVA();
 void setid();
 void setDate();
 void setMontantHTVA();
      AjoutFacture();
};

Reply

Marsh Posté le 28-10-2004 à 15:35:00    

Lam's a écrit :

A mon avis, Taz n'a jamais entendu parler de la STL... :o


 [:ddr555] [:rofl] [:ddr555]  


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 28-10-2004 à 15:36:07    

il est ou le post de Smaragdus ?

Reply

Marsh Posté le 28-10-2004 à 15:36:12    

Sais-tu quel est le rôle de AjoutFacture() ?
Elle n'a aucun param d'entrée donc comment peut elle faire un lien ?

Reply

Marsh Posté le 28-10-2004 à 15:42:13    

ajoutFacture()
n'a aucun param  
je sais bien car je ne sais pas bien ce qu'elle doit faire.
 
en tout cas il faut qu'elle ajoute la facture a la collection.
 
mais il faut un début.... et puis un chainage jusqu'a la 100èmè et derniere facture qui elle pointe vers NULL.
 
mais bon c trop dur


Message édité par fullnight le 16-12-2004 à 15:43:58
Reply

Marsh Posté le 28-10-2004 à 15:43:36    

Les forumeurs sont priés de ne pas mettre leurs titres en lettres capitales, conformément aux règles en vigueur sur cette section :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 28-10-2004 à 15:44:08    

fullnight a écrit :

ajoutFacture()
n'a aucun param  
je sais bien car je ne sais pas bien ce qu'elle doit faire.


 
Oui mais non, on t'a dit de ne pas faire comme ça.  
 
Relis mon message, et pose des questions si tu comprends pas, au lieu de t'entêter dans ton système de liste chaînée préhistorique.

Reply

Marsh Posté le 28-10-2004 à 15:50:32    

c'est pas que je m'entete
c'est le prof qui veut que ce soit une classe autoréférentielle donc je suis obligé de passer par la

Reply

Marsh Posté le 28-10-2004 à 15:52:15    

fullnight a écrit :

c'est pas que je m'entete
c'est le prof qui veut que ce soit une classe autoréférentielle donc je suis obligé de passer par la


 
 
ta pas de chance d'avoir un prof normal

Reply

Marsh Posté le 28-10-2004 à 15:52:51    

ok si je relis
je comprend que je dois créer une classe liste qui pointera vers 100 objets factures

Reply

Marsh Posté le 28-10-2004 à 15:53:32    

mais on n'a pas encore vu la STL !!
argh !!
c le dernier  chapitre du cours

Reply

Marsh Posté le 28-10-2004 à 15:53:58    

fullnight a écrit :

c'est pas que je m'entete
c'est le prof qui veut que ce soit une classe autoréférentielle donc je suis obligé de passer par la


 
ok, c'est bien ce qu'il me semblait. Donc tu pas besoin de classe Collection.
Sinon il te faut plusieurs méthodes pour te balader dans la liste chaînée, effacer un item, ajouter un item etc...

Reply

Marsh Posté le 28-10-2004 à 15:53:58    

le lien proposé est bien gentil mais en anglais et je n'ai plus qu'une heure pr terminer

Reply

Marsh Posté le 28-10-2004 à 15:54:25    

fullnight a écrit :

mais on n'a pas encore vu la STL !!
argh !!
c le dernier  chapitre du cours


 
ben prend un peu d'avance


Message édité par cris56 le 28-10-2004 à 15:55:08
Reply

Marsh Posté le 28-10-2004 à 15:55:03    

il a demandé aux plus forts d'effacer une facture bref de faire un menu .....
 
mais il veut simplement 100 factures par classe auto référencée

Reply

Marsh Posté le 28-10-2004 à 15:55:40    

fullnight a écrit :

le lien proposé est bien gentil mais en anglais et je n'ai plus qu'une heure pr terminer


 

Citation :

et voila que mon prof nous donne seulement 2 jours


 
Mouais :heink:  

Reply

Marsh Posté le 28-10-2004 à 15:56:45    

mince alors, on a une solution, mais ça gère que 99 factures ... pas de chance

Reply

Marsh Posté le 28-10-2004 à 15:59:09    

mardi il nous a demandé ca pour jeudi
donc ca fait 2 jours !
et sur la vie de ma mère que j'ai pas arreté de me questionner, d'implémenter et de pas trouver
hier jusqu'a 5 h du mat !
 
enfin on est jeudi et c chaud..... il me reste 1h

Reply

Marsh Posté le 28-10-2004 à 16:01:37    

et si tu réfléchissais un peu avant ? si on te dis de séparer liste et facture, c'est parce que ça n'a rien à voir et que ça t'aide à appréhender le problème de collection de manière plus simple.
 
fait ton UML/ADT de Liste, code là, après tu bourre tes factures dedans et ça marche

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed