/* Fichier struct0.cpp Introduction au type structure en C++ Accès aux membres d'une structure : variable.champ (accès à un champ) variable.fonction(...) (accès à une fonction membre) (*p).champ <----> p->champ (*p).fonction(. . .) <----> p->fonction(...) But du programme : voir l'exécution */ #include #include using namespace std; // type structure (existe depuis longtemp en Pascal, en C (puis C++), etc ...) struct Employe { int numero; // numéro d'employé double nbHr, taux; // nb d'heures de travail par semaine, taux horaire // une fonction membre double salHebdo() { return nbHr * taux ; } // une autre fonction membre : afficher les informations d'un employe void afficher(char message[] = "") { cout.setf(ios::fixed); cout.setf(ios::showpoint); cout << message ; cout << setw(5) << numero << setw(12) << setprecision(2) << nbHr << setw(10) << setprecision(2) << taux << setw(15) << setprecision(2) << salHebdo() << endl ; } }; // pour consulter l'écran d'exécution void continuer() { char reponse ; cout << "\nAppuyez sur une lettre suivie de Entree " ; cin >> reponse ; cout << endl << endl; } // transmission via référence void saisir(Employe & e) { cout << "Quel est son numero ? " ; cin >> e.numero; cout << "Tapez le nombre d'heures et le taux "; cin >> e.nbHr >> e.taux; } void demo1() { Employe emp; saisir(emp); cout << " => DEMO #1 sur le type structure en C++ : <=\n"; emp.afficher("Infos de l'employe qu'on vient de saisir au clavier:\n"); emp.nbHr += 10; // 10 heures de plus emp.afficher("Infos de l'employe s'il travaille 10 heures de plus:\n"); Employe emp2 = {2244, 40.0, 30.00} ; emp2.afficher("Infos de emp2 :"); } void demo2() { cout << "\n => DEMO #2 sur un pointeur vers une structure en C++ : <=\n"; Employe e1 = {8712, 32.5, 32.75}; Employe * p = &e1; // p pointe vers e1 => *p1 est e1 // => (*p1).champ est correct et on peut ecrire p->champ e1.afficher("Infos de e1 :"); cout << "Numero de l'employe pointe par p : " << (*p).numero << " qui est aussi p->numero " << p->numero << endl; cout << "Le taux d'horaire de l'employe pointe par p : " << p->taux << endl; p->afficher("\nInfos de l'employe pointe par p:"); } void afficher(Employe emp[], int nbEmp , char message[] = "avant le tri ") { cout << "Contenu du tableau d'employes " << message << endl; cout << " indice numero nb. hr taux sal. hebdo\n"; for (int i = 0; i < nbEmp; i++) { cout << setw(5) << i << ") "; emp[i].afficher(); } cout << endl ; } void demo3() { // déclarer + initialiser un tableau d'employés Employe emp[] = { {2233, 40.0, 17.50}, {1234, 30.5, 20.00}, {8712, 30.0, 40.00}, {3333, 37.5, 38.00}, {6531, 48.5, 12.75}, {2288, 38.5, 30.00} }; int nbEmp = sizeof(emp) / sizeof(Employe); cout << "\n => DEMO #3 sur un tableau de structure en C++ : <=\n"; afficher(emp, nbEmp); } int main() { demo1(); demo2(); demo3(); continuer(); return 0; } /* Exécution: Quel est son numero ? 6634 Tapez le nombre d'heures et le taux 50 45 => DEMO #1 sur le type structure en C++ : <= Infos de l'employe qu'on vient de saisir au clavier: 6634 50.00 45.00 2250.00 Infos de l'employe s'il travaille 10 heures de plus: 6634 60.00 45.00 2700.00 Infos de emp2 : 2244 40.00 30.00 1200.00 => DEMO #2 sur un pointeur vers une structure en C++ : <= Infos de e1 : 8712 32.50 32.75 1064.38 Numero de l'employe pointe par p : 8712 qui est aussi p->numero 8712 Le taux d'horaire de l'employe pointe par p : 32.75 Infos de l'employe pointe par p: 8712 32.50 32.75 1064.38 => DEMO #3 sur un tableau de structure en C++ : <= Contenu du tableau d'employes avant le tri indice numero nb. hr taux sal. hebdo 0) 2233 40.00 17.50 700.00 1) 1234 30.50 20.00 610.00 2) 8712 30.00 40.00 1200.00 3) 3333 37.50 28.00 1050.00 4) 6531 48.50 12.75 618.38 5) 2288 38.50 30.00 1155.00 Appuyez sur une lettre suivie de Entree k */