/* IFT1166 - démonstration #6 - exercice 8 14-octobre -2005 v1.02 M.Lokbani MàJ pour A05 à partir de ex-démo04-ex03 + gcc3.4.2, +comments 11-octobre -2005 v1.01 M.Lokbani écriture du programme contact: lokbani@iro.umontreal.ca Description: ------------ Le but de cet exercice est de vous montrez les passages par valeur & par référence dans le cas d'une structure. Par rapport à l'énoncé, nous avons ajouté la fonction "modife_ou_non" qui a pour tâche "normalement" de modifier le champ "jour". Copyright (C) 2003-2005 Université de Montréal Département d'informatique et de Recherche Opérationnelle Mohamed Lokbani -- Tous Droits Réservés -- All Rights Reserved -- */ #include #include using namespace std; // structure Date ayant les 3 champs suivants: mois, jour & annee struct Date { int mois; int jour; int annee; }; // une lecture rapide et non sécuritaire void lire_date(Date & date) { cout << "entrez la date j m a: \n"; cin >> date.jour >> date.mois >> date.annee; } // illustration du formatage (iomanip) void affiche_date(Date date) { // L'affichage de jour & mois se feront sur 2 digits. On complète par un zéro si // la valeur entrée tient sur un digit. L'affichage du champ annee est sur 4 digits. // Si la valeur entrée est inférieur a 100, on ajoute 1900. On a fait l'hypothèse // que l'année entrée est appartient au 20e siècle. cout << setw(2) << setfill('0') << date.jour << '/' << \ setw(2) << setfill('0') << date.mois << '/' << \ setw(4) << ((date.annee < 100)? date.annee+1900 : date.annee) << endl; } // On tente de modifier un des champs de la structure Date, le champ "jour". void modifie_ou_non(Date date) { date.jour = 15; } int main() { Date aujourdhui; Date& date_aujourdhui = aujourdhui; lire_date(date_aujourdhui); // Ne modifie pas car recopie (de tous les champs non dynamiques). date_aujourdhui serait // modifiée si on ajoutait & (référence) // void modifie_ou_non(Date& date) { // date.jour = 15; // } // Si c'est le cas l'appel de la fonction est: // modifie_ou_non(date_aujourdhui); modifie_ou_non(aujourdhui); affiche_date(aujourdhui); return 0; } /* >demo06exo8sol entrez la date j m a: 2 11 98 02/11/1998 >Exit code: 0 */