/*
Fichier : Version0.cpp (sera amélioré : voir Version1.cpp)
*/
#include <iostream> // pour cin, cout, ... #include <iomanip> // pour les manipulateurs du formatage
#include <string> // pour la gestion des chaînes de caractères
#include <fstream> // pour les fichiers
using namespace std;
void lire(char nomALire[], char sexe[], int num[], double taille[], double poids[], int *p)
//je suppose que char nomALire[] est ajouté aux 4 autres tableaux ? pour avoir les données en mémoire ?
{ ifstream aLire (nomALire, ios::in); // localiser et ouvrir pour la lecture
int n = 0 ; // initialiser le compteur
// lire, remplir et compter
while (aLire >> sexe[n] >> num[n] >> taille[n] >> poids[n] )
n++;
*p = n;
aLire.close(); }
void afficher(char sexe[], int num[], double taille[], double poids[], int nbPers, string message)
{ cout << "Contenu des tableaux " << message << ":" << endl << endl ;
for (int i = 0; i < nbPers ; i++)
cout << i << " )\t" << num[i] << "\t\t" << taille[i]
<< "\t\t" << poids[i] << endl;
cout << endl;
}
void permuter (int * p, int * r)
{
int tempo = *p;
*p = *r;
*r = tempo;
}
void permuter (char * p, char * r)
{
char tempo = *p;
*p = *r;
*r = tempo;
}
void permuter (double * p, double * r)
{
double tempo = *p;
*p = *r;
*r = tempo;
}
void trier(char sexe[], int numero[], double taille[], double poids[], int nbPers)
{ int i, j, indMin;
for (i = 0; i < nbPers-1 ; i++)
{ indMin = i;
for (j = i+1; j < nbPers-1 ; j++)
if ( numero[j] < numero[indMin] )
indMin = j;
if (indMin != i)
{ permuter(&numero[i], &numero[indMin]);
permuter(&sexe[i], &sexe[indMin]);
permuter(&taille[i], &taille[indMin]);
permuter(&poids[i], &poids[indMin]);
}
}
}
int main()
{
const int MAX_PERS = 20; //et si le nombre de données n'est pas constant ? char sexe[MAX_PERS];
int numero[MAX_PERS];
double taille[MAX_PERS], poids[MAX_PERS];
int nbPers;
// transmission du nombre de personnes via pointeur (style du C)
lire("R:\\mesures.dta", sexe, numero, taille, poids, &nbPers);
afficher(sexe, numero, taille, poids, nbPers, "apres la lecture" );
trier(sexe, numero, taille, poids, nbPers);
afficher(sexe, numero, taille, poids, nbPers, "apres le tri selon les numeros" );
return 0;
} |