| 12
 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;
} | 
Partager