coorigez moi svp , pour une debutante en c++ , merci à tous........

coorigez moi svp , pour une debutante en c++ , merci à tous........ - C++ - Programmation

Marsh Posté le 25-10-2002 à 22:38:00    

Code :
  1. #include <iostream>
  2. #include <fstream>
  3. #include <map>
  4. #include <iterator>
  5. using namespace std;
  6. class CNoeud
  7. {
  8. int generation;
  9. string prenom;
  10. CNoeud * pere;
  11. struct{
  12. int jj;
  13. int mm;
  14. int aaaa;
  15. } dat_naiss , dat_dece;
  16. char sex;
  17. string etat_civil;
  18. bool decede;
  19. string epouse;
  20. multimap<string,CNoeud> enfants;
  21. multimap<string,CNoeud>::iterator it = enfants.begin();
  22. public :
  23. CNoeud(){};
  24. ~CNoeud(){};
  25. ostream& operator<<(ostream& flux,CNoeud& obj)
  26. {
  27. flux<<"\t"<<obj.prenom<<"\t\t\t"
  28.             <<obj.generation<<"\t\t\t"
  29.             <<*obj.pere<<"\t"
  30.             <<obj.dat_naiss<<"\t\t\t"
  31.             <<obj.sex<<"\t\t\t"
  32.             <<obj.etat_civil<<"\t";
  33. if(obj.etat_civil=="marie" )
  34.  flux<<obj.epouse<<"\t";
  35. if(obj.decede)
  36.  flux<<obj.dat_dece;
  37. while(obj.it != obj.enfants.end())
  38. {
  39.  flux<<"\t"<<(*obj.it).first;
  40.  (obj.it)++;
  41. }
  42. return flux;
  43. }
  44. istream& operator >>(istream& flux,CNoeud& obj)
  45. {
  46. cout<<"\n\tPrenom\n";
  47. flux>>obj.prenom;
  48. cout<<"\n\tDate de naissance\n";
  49. flux>>obj.dat_naiss.jj;
  50. cout<<"/";
  51. flux>>obj.dat_naiss.mm;
  52. cout<<"/";
  53. flux>>obj.dat_naiss.aaaa;
  54. cout<<"\n\tSexe\n";
  55. flux>>obj.sex;
  56. cout<<"\n\tEtat civil\n";
  57. flux>>obj.etat_civil;
  58. if(obj.etat_civil=="marie" )
  59. {
  60. cout<<"\n\tLe nom de l'epouse\n";
  61. flux>>obj.epouse;
  62. }
  63. return flux;
  64. }
  65. };

Reply

Marsh Posté le 25-10-2002 à 22:38:00   

Reply

Marsh Posté le 25-10-2002 à 22:42:06    

Code :
  1. int main(int nombre_de_parametres, char** parametres)
  2. {
  3. fprintf(stdout, "C'est quoi la qustion ?\n" );
  4. return 1;
  5. }


:??:


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 25-10-2002 à 22:50:48    

débutante, ma

Reply

Marsh Posté le 25-10-2002 à 22:51:01    

débutante, maais pas en troll
 
 
quand on utilise la lib std, on est pas débutant ....


Message édité par farib le 25-10-2002 à 22:52:28
Reply

Marsh Posté le 25-10-2002 à 23:10:01    

ma question est :  
est ce que mon code est correct ?
la surcharge des flux ???
merci à tous.

Reply

Marsh Posté le 25-10-2002 à 23:15:24    

nathaliecom a écrit a écrit :

 
est ce que mon code est correct ?




Non.

Reply

Marsh Posté le 25-10-2002 à 23:23:04    

corrigez moi svp!
soyez gentille!

Reply

Marsh Posté le 25-10-2002 à 23:33:27    

nathaliecom a écrit a écrit :

corrigez moi svp!
soyez gentille!




 
ah ben c a une fille que tu t'adresses ... désolé  [:proy]

Reply

Marsh Posté le 25-10-2002 à 23:41:37    

je m'excuse
c'est un peu la fatigue...

Reply

Marsh Posté le 26-10-2002 à 00:21:17    

nathaliecom a écrit a écrit :

corrigez moi svp!




 
Volontier
 
[:dehors2]


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 26-10-2002 à 00:21:17   

Reply

Marsh Posté le 26-10-2002 à 00:31:36    

zérte pas cool avec uen nouvelle :D


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 26-10-2002 à 09:23:09    

tu ferais mieux de compiler  :sarcastic:  
 
y a effectivement quelques problèmes, notemment, les E/S avec des stream doivent etre définies comme fonctions friends, si tu tiens vraiment à ce qu'elle soit partie de ta classe
 
sinon, moi je fait des fonctions non-friend comme ceci
 

Code :
  1. ostream& operator<<(ostream &os, const objet &obj)
  2. {
  3.   return os << obj.print();
  4. }
  5. // ou la méthode print() renvoie une std::string, représentation de obj
  6. istream& operator>>(istream &is, objet &obj)
  7. {
  8.   t1 champ1;
  9.   is >> champ1;
  10.   //....
  11.   tn champn;
  12.   is >> champn;
  13.   obj tmp(champ1, champ2, ...champn);
  14.   obj.swap(tmp); // obj muni d'une méthode swap (spécialisée donc plus performante que std::swap)
  15.   // ou
  16.   obj.SetChamp1(champ1);
  17.   obj.SetChampn(champ);
  18. return is;
  19. }


Message édité par Taz@PPC le 26-10-2002 à 09:23:46

---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-10-2002 à 13:48:37    

merci bcp...

Reply

Marsh Posté le 26-10-2002 à 14:35:45    

:hello:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-10-2002 à 19:07:07    

[:zed pocketsworid]


---------------
Je code en série et en parallèle
Reply

Marsh Posté le 26-10-2002 à 19:24:48    

fallait pas dire que t'es une nana, c'est des choses qui arrivent

Reply

Marsh Posté le 26-10-2002 à 21:04:02    

nathaliecom >>> tu fais des études d'informatique ou t'es une vrai geekette qui fait du C++ pour le plaisir?


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-10-2002 à 21:37:56    

a poil !! :sarcastic:

Reply

Marsh Posté le 26-10-2002 à 21:39:47    

travoupatrav ?  [:zebra33]


---------------
Je code en série et en parallèle
Reply

Marsh Posté le 26-10-2002 à 21:44:54    

une chose est sure: z'etes tous des paidaikipuducucu


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-10-2002 à 22:31:11    

Serial Coder a écrit a écrit :

travoupatrav ?  [:zebra33]  




 

orazur a écrit a écrit :

a poil !! :sarcastic:  




 
On est pas sur blabla :o Si vous continuez vous allez dire bonjours aux Teletubbies :p


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

Marsh Posté le 26-10-2002 à 22:44:53    

:jap:


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-10-2002 à 23:33:26    

Il faut se souvenir que les fonctions définies dans le corps de la classe sont "inline", ce qui n'est pas génial quand elles sont trop longues...
Et les opérateurs membres de la classe ont un premier argument implicitement du type exact de la classe, donc ça ne marche pas pour cout<<obj.
Ne pas oublier de recevoir des références const si on ne modifies pas l'objet.
 
CNoeud.hpp

Code :
  1. class CNoeud
  2. {
  3. //...
  4. friend ostream& operator<<(ostream& flux, const CNoeud& obj);
  5. friend istream& CNoeud::operator >>(istream& flux, CNoeud& obj)
  6. public :
  7. CNoeud(){};
  8. ~CNoeud(){};
  9. };


CNoeud.cpp

Code :
  1. #include "CNoeud.hpp"
  2. ostream& CNoeud::operator<<(ostream& flux, const CNoeud& obj)
  3. {
  4. //...
  5. return flux;
  6. }
  7. istream& CNoeud::operator >>(istream& flux, CNoeud& obj)
  8. {
  9. //...
  10. return flux;
  11. }

   
 
Ce genre de comparaisons est dangereuse:

Code :
  1. obj.etat_civil=="marie"

Il vaudrait mieux stocker une énumération, ou des références sur un ensemble de "string" prédéfinies.
 
Il me semble que le membre "it" n'a rien à faire dans la classe.
Par contre, un typedef oui:

Code :
  1. typedef multimap<string,CNoeud>::iterator enfants_itor;


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 04-11-2002 à 13:54:06    

[respect]Musaran[/respect] a écrit :

 



Reply

Marsh Posté le 04-11-2002 à 23:57:20    

Ça reste des notions de base, des réflexes qu'on finit par apprendre.
Les objests C++, je les ai peu utilisés en fait.
 
Elle est partie... ce qui ne m'étonne pas.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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