/* Fichier reference.cpp Notion de référence en C++ */ #include #include // pour setw et setprecision using namespace std; void continuer() { cout << endl << endl << "Appuyez sur une lettre suivie de Entree " ; char lettre; cin >> lettre ; cout << endl << endl; } // transmission de paramètres par référence : simulation en classe void permuter(int &x, int & y) { int tempo = x ; x = y ; y = tempo; } void demo1() { cout << "Demo 1 : notion de reference : " << endl ; int age = 32; int &x = age ; // x est un surnom de age (même zone de mémoire) cout << "x vaut " << x << " son adresse est " << (int) &x << endl ; cout << "age vaut " << age << " son adresse est " << (int) &age << endl ; x = 45 ; cout << "\nMaintenant x vaut " << x << " => age vaut " << age << endl ; continuer(); } void demo2() { cout << endl << "Demo 2 : transmission par reference (expliquer en classe)\n"; int age1 = 25, age2 = 31 ; cout << "Avant de permuter : age1 vaut " << age1 << endl ; cout << " age2 vaut " << age2 << endl; permuter(age1, age2); cout << "\nApres de permuter : age1 vaut " << age1 << endl ; cout << " age2 vaut " << age2 << endl << endl ; continuer(); } void afficher(int nbCafe[], int nbPers) { cout << "Contenu du tableau de consommation de cafe : " << endl; cout << " i nbCafe[i] " << endl ; for (int i = 0; i < nbPers; i++) cout << setw(4) << i << setw(12) << nbCafe[i] << endl; cout << endl ; } void determiner(int tableau[], int nbElem, int & maxi, int & mini, float & moyenne) { maxi = mini = tableau[0]; float somme = tableau[0]; for (int i = 1; i < nbElem; i++) { somme += tableau[i]; if (tableau[i] < mini) mini = tableau[i]; if (tableau[i] > maxi) maxi = tableau[i]; } moyenne = somme / nbElem; } void demo3() { cout << endl << "Demo 3 : transmission par reference (expliquer en classe)\n"; int nbCafe[] = { 3, 0, 2, 1, 4, 1, 2 }; int nbPers = sizeof(nbCafe) / sizeof(int) ; afficher(nbCafe, nbPers) ; int cafeMax, cafeMin ; float cafeMoy; determiner(nbCafe, nbPers, cafeMax, cafeMin, cafeMoy); cout << "Consommation de cafe : " << endl; cout << " - maximale ==> " << cafeMax << " tasse(s) par jour\n" << endl ; cout << " - minimale ==> " << cafeMin << " tasse(s) par jour\n" << endl ; cout.setf(ios::fixed); cout.setf(ios::showpoint); cout << " - moyenne ==> " << setw(5) << setprecision(2) << cafeMoy << " tasse(s) par jour " << endl ; } int main() { demo1(); demo2(); demo3(); continuer(); return 0; } /* Exécution : Demo 1 : notion de reference : x vaut 32 son adresse est 2686724 age vaut 32 son adresse est 2686724 Maintenant x vaut 45 => age vaut 45 Appuyez sur une lettre suivie de Entree k Demo 2 : transmission par reference (expliquer en classe) Avant de permuter : age1 vaut 25 age2 vaut 31 Apres de permuter : age1 vaut 31 age2 vaut 25 Appuyez sur une lettre suivie de Entree k Demo 3 : transmission par reference (expliquer en classe) Contenu du tableau de consommation de cafe : i nbCafe[i] 0 3 1 0 2 2 3 1 4 4 5 1 6 2 Consommation de cafe : - maximale ==> 4 tasse(s) par jour - minimale ==> 0 tasse(s) par jour - moyenne ==> 1.86 tasse(s) par jour Appuyez sur une lettre suivie de Entree */