/* Fichier : Essai2_ve3.cpp comme Essai2_ve2.cpp dont la permutation se fait avec : - un modèle de fonctions (template) dont les paramètres sont transmis via pointeurs Auteurs : Leblanc Nicole IFT 1166 été 2015, groupe 1 Lafleur Marc IFT 1166 été 2015, groupe 2 Buts du programme : Ce programme permet de 1) déclarer et initialiser les tableaux de réels : taille et poids le tableau des caractères : sexe 2) afficher le contenu de ces 3 tableaux avant le tri 3) trier ces 3 tableaux selon les tailles 4) réafficher le contenu des 3 tableaux après le tri Dernière mise à jour : mercredi le 13 mai 2015 Remarque : la permutation sera améliorée avec des exemples à venir. */ #include #include using namespace std; /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Auteur : Leblanc Nicole + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Cette fonction permet d'afficher le contenu des 3 tableaux avec un message + + pertinent sur l'en-tête. + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Dernière mise à jour : mardi le 5 mai 2015 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ void afficher(float taille[], float poids[], char sexe[], int nbPers, const char mess[]) { cout << "Contenu des 3 tableaux " << mess << ": " << endl ; cout << " i taille poids sexe" << endl ; for(int i = 0; i < nbPers; i++) { cout << setw(3) << i << ") " << setw(10) << setprecision(2) << taille[i] << setw(8) << setprecision(1) << poids[i] << setw(5) << sexe[i] << endl; } cout << endl << endl ; } // permuter 2 éléments de même type template void permuter(T * p1, T * p2) { T tempo = *p1; *p1 = *p2; *p2 = tempo; } /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Auteur : Lafleur Marc + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Cette fonction permet de trier les trois tableaux selon les tailles. + + C'est le tri par sélection vu dans IFT 1810 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Dernière mise à jour : lundi le 4 mai 2015 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ void trier(float taille[], float poids[], char sexe[], int nbPers) { for(int i = 0; i < nbPers-1; i++) { int indMin = i; for(int j = i+1; j < nbPers; j++) if (taille[j] < taille[indMin]) indMin = j; if (indMin != i) // on permute les éléments des 3 tableaux { permuter(&taille[i], &taille[indMin]); permuter(&poids[i], &poids[indMin]); permuter(&sexe[i], &sexe[indMin]); } } } int main() { float taille[] = { 1.72, 1.76, 1.54, 1.83, 1.68, 1.75}, poids[] = { 65.1, 76.3, 86.2, 90.5, 100.2, 85.3} ; char sexe[] = { 'F', 'M', 'M', 'F', 'F', 'F'}; int nbPers = sizeof(sexe) / sizeof(char) ; cout.setf(ios::fixed); cout.setf(ios::showpoint); afficher(taille, poids, sexe, nbPers, "avant le tri"); trier(taille, poids, sexe, nbPers); afficher(taille, poids, sexe, nbPers, "apres le tri selon les tailles"); return 0; } /* Exécution : Contenu des 3 tableaux avant le tri: i taille poids sexe 0) 1.72 65.1 F 1) 1.76 76.3 M 2) 1.54 86.2 M 3) 1.83 90.5 F 4) 1.68 100.2 F 5) 1.75 85.3 F Contenu des 3 tableaux apres le tri selon les tailles: i taille poids sexe 0) 1.54 86.2 M 1) 1.68 100.2 F 2) 1.72 65.1 F 3) 1.75 85.3 F 4) 1.76 76.3 M 5) 1.83 90.5 F -------------------------------- Process exited after 0.05287 seconds with return value 0 Appuyez sur une touche pour continuer... */