/* Fichier structure.cpp */ #include // pour entrée-sortie cin, cout #include // pour le formatage #include // pour les fichiers #include #include using namespace std; // librairie standard struct Employe { char sexe ; int numero; float salHebdo ; void afficher(string mess) { cout << mess << " :\n"; cout << "sexe : " << (sexe == 'F'? "feminin" : "masculin") << endl ; cout << "numero : " << numero << endl ; cout << "sal. hebdo. : " << salHebdo << " $\n\n"; } }; // pour consulter l'écran d'exécution void continuer() { char reponse ; cout << "\nAppuyez sur une lettre suivie de Entree " ; cin >> reponse ; } /* cette fonction est expliquée en classe : Elle permet de lire le fichier à partir de son nom, de remplir le tableau des employes et de transmettre via reference le nombre d'employes lus. */ void lireRemplir(const char nomALire[], Employe emp[], int & n) { float nbHr, tauxHr; ifstream aLire (nomALire, ios::in); // localiser et ouvrir pour la lecture n = 0; // initialiser le compteur while (aLire >> emp[n].sexe >> emp[n].numero >> nbHr >> tauxHr) emp[n++].salHebdo = nbHr * tauxHr; aLire.close(); } void compter(Employe emp[], int nbEmp, int &nbF, int & nbH) { nbH = nbF = 0; for(int i = 0; i < nbEmp; i++) if (emp[i].sexe == 'F') nbF++; else nbH++; } int indMax(char sexeVoulu, Employe emp[], int nbEmp) { int ind = -1 ; float salMax = - FLT_MAX; for(int i = 0; i < nbEmp; i++) if (emp[i].sexe == sexeVoulu && emp[i].salHebdo > salMax) { salMax = emp[i].salHebdo; ind = i; } return ind; } void creer(Employe emp[], int nbEmp, const char nomACreer[], float borne) { ofstream aCreer (nomACreer, ios::out); aCreer.setf(ios::fixed); aCreer.setf(ios::showpoint); for(int i = 0; i < nbEmp; i++) if (emp[i].salHebdo >= borne) aCreer << emp[i].sexe << setw(6) << emp[i].numero << setw(10) << setprecision(2) << emp[i].salHebdo << endl ; aCreer.close() ; } int main() { const int MAX_EMP = 100; Employe emp[MAX_EMP]; int nbEmp ; lireRemplir("employe.txt", emp, nbEmp); int nbFem, nbHom; compter(emp, nbEmp, nbFem, nbHom); cout << "On a lu " << nbFem << " femme(s) et " << nbHom << " homme(s)\n"; if (nbFem > 0) { int k = indMax('F', emp, nbEmp); emp[k].afficher("Infos de la femme ayant le meilleur salaire hebdo"); } else cout << "Pas de femmes traitees\n"; creer(emp, nbEmp, "employe.zut", 1000.00); continuer(); return 0; } /* Exécution: On a lu 49 femme(s) et 41 homme(s) Infos de la femme ayant le meilleur salaire hebdo : sexe : feminin numero : 316 sal. hebdo. : 2410 $ Appuyez sur une lettre suivie de Entree */