/* Fichier : Essai2.cpp 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 06 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 ; } float maxi(float tab[], int nbElem) { float plusGrand = tab[0]; for(int i = 1; i < nbElem ; i++) if (tab[i] > plusGrand) plusGrand = tab[i]; return plusGrand; } int nombre(char sexeVoulu, char sexe[], float borne, float tab[], int nbPers) { int n = 0; for(int i = 0; i < nbPers; i++) if (sexe[i] == sexeVoulu && tab[i] > borne) n++; return n; } /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 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 { float tempo = taille[i] ; taille[i] = taille[indMin]; taille[indMin] = tempo; tempo = poids[i]; poids[i] = poids[indMin]; poids[indMin] = tempo; char tempo2 = sexe[i] ; sexe[i] = sexe[indMin]; sexe[indMin] = tempo2; } } } 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"); cout << "La taille la + grande : " << setprecision(2) << maxi(taille, nbPers) << " metre\n"; cout << "Le poids le + lourd : " << setprecision(2) << maxi(poids, nbPers) << " kg\n"; cout << "Il y a " << nombre('F', sexe, 1.65, taille, nbPers) << " femme(s) demandée(s)\n"; cout << nombre('M', sexe, 70.0, poids, nbPers) << " homme(s) demandes\n"; 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.05858 seconds with return value 0 Appuyez sur une touche pour continuer... */