//#ifdef WIN32 //#include "stdafx.h" // environnement VC++ version 2005 //#endif #include // entrée-sortie standard #include // formatage (présentation) #include // chaîne de caractères (détails : plus tard) #include using namespace std; // librairie standard const double PIED_EN_METRE = 0.3048; const double LBS_EN_KG = 0.424; void lireRemplir(char nomALire[], int chandail[], double taille[], double poids[], int naissance[], int position[], string nomPre[], int & n) { ifstream aLire (nomALire, ios::in); // localiser et ouvrir pour la lecture n = 0; // initialiser le compteur string ligne; while( getline(aLire, ligne, '\n')) { chandail[n] = atoi((ligne.substr(0,3)).c_str()); int pieds = atoi((ligne.substr(4,1)).c_str()); int pouces = atoi((ligne.substr(6,2)).c_str()); taille[n] = (pieds + pouces / 12.0) * PIED_EN_METRE; // On demande la taille en système métrique int lbs = atoi((ligne.substr(13,3)).c_str()); poids[n] = lbs * LBS_EN_KG; // On demande le poids en système métrique naissance[n] = atoi((ligne.substr(19,4)).c_str()); position[n] = atoi((ligne.substr(26,1)).c_str()); nomPre[n] = ligne.substr(30); // de l'indice 30 jusqu'à la fin n++; } aLire.close(); } void afficher(int chandail[], double taille[], double poids[], int naissance[], int position[], string nomPre[], int & n, int & prem, int & dern, string mess = "Informations des 8 premiers et des 5 derniers joueurs lus") { /* afficher le point de décimal */ cout.setf(ios::showpoint); /* afficher la partie décimale en mode point flottant fixe */ cout.setf(ios :: fixed); cout << mess << " :\n\n"; cout << "Rang Chandail Taille Poids Naissance Position Nom et Prenom" << endl; for (int i = 0; i < prem; i++) cout << setw(3) << i << ") " << setw(5) << chandail[i] << setw(9) << setprecision(3) << taille[i] << setw(7) << setprecision(2) << poids[i] << setw(7) << naissance[i] << setw(8) << position[i] << setw(28) << nomPre[i] << endl; cout << endl; for (int i = n-dern; i < n; i++) cout << setw(3) << i << ") " << setw(5) << chandail[i] << setw(9) << setprecision(3) << taille[i] << setw(7) << setprecision(2) << poids[i] << setw(7) << naissance[i] << setw(8) << position[i] << setw(28) << nomPre[i] << endl; cout << endl; } int indiceMaxi(double aChercher, double numero[], int nbJou) { for (int i = 0; i < nbJou; i++) if (numero[i] == aChercher) return i; } void determinerMax(int chandail[], double taille[], double poids[], int naissance[], int position[], string nomPre[], int & n, char code) { double maxi; int indice; if (code == 'p') { maxi = poids[0]; for (int i = 1; i < n; i++) { if (poids[i] > maxi) maxi = poids[i]; } indice = indiceMaxi(maxi, poids, n); cout << "Joueur le plus lourd de l'équipe : \n"; } else { maxi = taille[0]; for (int i = 1; i < n; i++) { if (taille[i] > maxi) maxi = taille[i]; } indice = indiceMaxi(maxi, taille, n); cout << "Joueur le plus grand de l'équipe : \n"; } /* afficher le point de décimal */ cout.setf(ios::showpoint); /* afficher la partie décimale en mode point flottant fixe */ cout.setf(ios :: fixed); cout << "Rang Chandail Taille Poids Naissance Position Nom et Prenom" << endl; cout << setw(3) << indice << ") " << setw(5) << chandail[indice] << setw(9) << setprecision(3) << taille[indice] << setw(7) << setprecision(2) << poids[indice] << setw(7) << naissance[indice] << setw(8) << position[indice] << setw(28) << nomPre[indice] << endl; cout << endl; } void moyenne(int chandail[], double taille[], double poids[], int naissance[], int position[], string nomPre[], int & n, char code) { double moy; int k; if (code == '1') { moy = 0; k = 0; for (int i = 0; i < n; i++) if (position[i] == 1) { moy += taille[i]; k++; } cout << "La taille moyenne des gardiens de buts est : " << (moy/k) << endl; } else if (code == '2') { moy = 0; k = 0; for (int i = 0; i < n; i++) if (position[i] == 2) { moy += taille[i]; k++; } cout << "La taille moyenne des défenseurs est : " << (moy/k) << endl; } else if (code == 't') { moy = 0; for (int i = 0; i < n; i++) moy += taille[i]; cout << "La taille moyenne de tous les joueurs est : " << (moy/n) << endl; } else if (code == '3') { moy = 0; k = 0; for (int i = 0; i < n; i++) if (position[i] == 3) { moy += poids[i]; k++; } cout << "Le poids moyen des joueurs de centre est : " << (moy/k) << endl; } else if (code == '4') { moy = 0; k = 0; for (int i = 0; i < n; i++) if (position[i] == 4) { moy += poids[i]; k++; } cout << "Le poids moyen des ailiers gauches est : " << (moy/k) << endl; } else { moy = 0; for (int i = 0; i < n; i++) moy += poids[i]; cout << "Le poids moyen de tous les joueurs est : " << (moy/n) << endl; } } int indiceMaxi(double aChercher, int numero[], int nbJou) { for (int i = 0; i < nbJou; i++) if (numero[i] == aChercher) return i; } void jeune(int naissance[], string nomPre[], int & n) { int maxi = naissance[0]; for (int i = 1; i < n; i++) { if (naissance[i] > maxi) maxi = naissance[i]; } int indice = indiceMaxi(maxi, naissance, n); cout << "Le joueur le plus jeune de l'équipe est " << nomPre[indice] << endl << endl; } template void permuter(T & a, T &b) { T tempo = a; a = b; b = tempo; } void trier(int chandail[], double taille[], double poids[], int naissance[], int position[], string nomPre[], int & n) { for (int i = 0 ; i < n-1; i++) { int indMin = i; for (int j = i+1; j < n; j++) if (taille[j] < taille[indMin]) indMin = j; if ( indMin != i) { permuter(chandail[i], chandail[indMin]); permuter(taille[i], taille[indMin]); permuter(poids[i], poids[indMin]); permuter(naissance[i], naissance[indMin]); permuter(position[i], position[indMin]); permuter(nomPre[i], nomPre[indMin]); } } } void rechercher(int chandail[], double taille[], double poids[], int naissance[], int position[], string nomPre[], int & n, string aChercher) { int k; string nom; for(int i = 0; i < n; i++) { k = nomPre[i].length()-1; nom = nomPre[i]; while (k > 0 && nom[k] == ' ') k--; nomPre[i] = nom.substr(0, k-2); if (nomPre[i] == aChercher) { cout << "Rang Chandail Taille Poids Naissance Position Nom et Prenom" << endl; cout << setw(3) << i << ") " << setw(5) << chandail[i] << setw(9) << setprecision(3) << taille[i] << setw(7) << setprecision(2) << poids[i] << setw(7) << naissance[i] << setw(8) << position[i] << setw(28) << nomPre[i] << endl; cout << endl; } } cout << "Le nom demandé n'est pas dans la liste" << endl; } int main() { const int MAX_PERS = 25; int chandail[MAX_PERS], position[MAX_PERS], naissance[MAX_PERS]; double taille[MAX_PERS], poids[MAX_PERS]; string nomPre[MAX_PERS]; int nbPers; lireRemplir("Canadiens.Mtl", chandail, taille, poids, naissance, position, nomPre, nbPers); int premier = 8, dernier = 5; afficher(chandail, taille, poids, naissance, position, nomPre, nbPers, premier, dernier); determinerMax(chandail, taille, poids, naissance, position, nomPre, nbPers, 'p'); determinerMax(chandail, taille, poids, naissance, position, nomPre, nbPers, 't'); moyenne(chandail, taille, poids, naissance, position, nomPre, nbPers, '1'); moyenne(chandail, taille, poids, naissance, position, nomPre, nbPers, '2'); moyenne(chandail, taille, poids, naissance, position, nomPre, nbPers, 't'); cout << endl; moyenne(chandail, taille, poids, naissance, position, nomPre, nbPers, '3'); moyenne(chandail, taille, poids, naissance, position, nomPre, nbPers, '4'); moyenne(chandail, taille, poids, naissance, position, nomPre, nbPers, 'p'); cout << endl; jeune(naissance, nomPre, nbPers); premier = 4, dernier = 6; trier(chandail, taille, poids, naissance, position, nomPre, nbPers); afficher(chandail, taille, poids, naissance, position, nomPre, nbPers, premier, dernier, "Informations des 4 premiers et des 6 derniers joueurs lus triés"); rechercher(chandail, taille, poids, naissance, position, nomPre, nbPers, "Maxime Lapierre"); rechercher(chandail, taille, poids, naissance, position, nomPre, nbPers, "Alexei Kovalev"); rechercher(chandail, taille, poids, naissance, position, nomPre, nbPers, "Guy Lafleur"); return 0; }