bonjour!voila j'ai conçu une classe personne dans laquelle je dois lire un fichier dans un tableau. j'ai conçu mon code quand je le compile il n'y ya pas d'erreur.mais il ne lit pas mon fichier il me m'affiche plein d'autre choses qui na rien a voir avec mon fichier. aussi je ne metrise pas vraima la lecture des fichiers dans une classe. surtout avec les methode get. est ce quelqu'un pourrai me donner un coup de main? voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
         /* 
Concevez la classe Personne comportant 
1.	des champs privés  sexe, age, taille ;
2.	d'une fonction privée pour convertir en mètre une taille en nombre de pieds et de pouces en sachant que 1 pied = 0.3048 mètre et 1 pied = 12 pouces
3.	de quelques constructeurs dont au moins un avec la définition reportée
4.	de quelques méthodes jugées appropriées . . .
5.	d afficher un tableau de personne
6.	d'afficher le contenu de ce tableau . . . etc ...
*/
 
#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>   // pour les fichiers
#include <float.h>
 
 
using namespace std;
       #define LONG_NP  30
class Personne {
 
  private :
 	char sexe ;
     int  numero;
	float taille ;
	float  poids;
 
	// on ne veut pas fournir cette méthode à l'usager => l'accès est privé
	float metre(int nbPieds, int nbPouces) {
		const float PIED_EN_METRE = 0.3048; // 1 pied = 0.3048 mètre = 12 pouces
		return (nbPieds + nbPouces / 12.0) * PIED_EN_METRE;
	}
	float kilo(int nbLivres)
	{
     const float LIVRE_EN_KG = 0.454; 
     return (nbLivres * LIVRE_EN_KG);    
          }
  public :
 
 
      // modèle d'une méthode dont la définition est reportée
	  void afficher(string);
 
	  // methode d'acces
	  int getNumero()
	  {
         return numero;   
      }
      char getSexe()
	  {
         return sexe;   
      }
 
	  float getTaille()
	  {
         return taille;   
      }
      float getPoids()
	  {
         return poids;   
      }
 
 
      // methode de modification
      void setTaille(double nouvTaille)
      {
            taille = nouvTaille;
      }
      void setPoids(double nouvPoids)
      {
            poids = nouvPoids;
      }
      bool plusPetite(Personne autre)
      {
            return taille < autre.taille;
      }
};
 
/*
Personne::Personne(char s,int n, int nbPieds, int nbPouces, int nbLivres) 
 {	
     sexe = s ;
      numero = n;
	 taille = metre(nbPieds, nbPouces) ;
	 poids = kilo(nbLivres);
}*/
 
void Personne::afficher(string message) {
  cout.setf(ios::fixed);
  cout.setf(ios::showpoint);                               
  cout << message 
  << setw(11)<< ( toupper(sexe) == 'F' ?  "feminin" : "masculin")
       << setw(5) << numero 
       << setw(7) << setprecision(2) << taille  
       << setw(7) << setprecision(2) << poids  
	 << endl ;
}
 
 
/* fin de la classe Personne */
 
 void continuer()
     {
             cout << endl << endl << "Appuyez sur une lettre suivie de Entree " ;
             char lettre;
             cin >> lettre ;
             cout << endl << endl;
     }
 
void afficher(Personne pers[], int nbPers, string mess = "au debut") {
  cout << "\nContenu du tableau des personnes " << mess << " :\n";
 
  for (int i = 0 ; i < nbPers ; i++)
      pers[i].afficher("");
  cout << endl;
}
 
 
 
 
 void lireRemplir(const char nomALire[], Personne pers[], int & n)
     {   
       const float PIED_EN_METRE = 0.3048,
                   LIVRE_EN_KG = 0.454;
       int nbPieds, nbPouces, nbLivres;
   float taille, poids;
       char sexe;int numero;
        ifstream  aLire (nomALire, ios::in); // localiser et ouvrir pour la lecture
 
	    n = 0; // initialiser le compteur
		//FILE * aLire = fopen(nomFichier, "r"); /* for reading */        
      // while ( !feof(aLire) )		
		while (aLire>> sexe >>  numero  >> nbPieds >>nbPouces>> nbLivres)				       
		{ 
              pers[n].getSexe();
               pers[n].getNumero();
               pers[n].getTaille()==(nbPieds + nbPouces /12.0) * PIED_EN_METRE;
               pers[n].getPoids()==(nbLivres * LIVRE_EN_KG) ;                                
              //Personne unePers(sexe, numero, taille, poids);                              
               n++;
		}
		aLire.close();   
 
	}
 
 
 
 
 
 int main() {
 
 
 
 const int MAX_Pers = 25;
Personne  pers[MAX_Pers];
//Personne[] pers = new Personne[MAX_Pers];
int numero[MAX_Pers];
 char sexe[MAX_Pers];
 float taille[MAX_Pers], poids[MAX_Pers];
 
 int nbPers=sizeof(sexe) / sizeof(int) ;
 lireRemplir("toto.txt", pers, nbPers);
 
  printf("On vient de lire les informations de %d personnes\n\n", nbPers);
 
  afficher(pers, nbPers, " Tableau avant le tri");
  continuer();
 return 0;
}