IFT1166 Démonstration #3



20-août-2000 M.Lokbani mise à jour pour A00




Exercice 1

Exécution d'un programme C++:

1. Copiez le fichier suivant: demo3exo1.cpp. Pour copier ce fichier, vous pouvez cliquer sur le lien, choisir Fichier/Enregistrer sous... spécifier le dossier et cliquer sur Save.

2. Compilez et exécutez le fichier demo3exo1.cpp pour voir ce qu'il fait:

Pour compiler, faites: g++ -Wall demo3exo1.cpp -o demo3exo1
Pour exécuter, faites: demo3exo1 ou ./demo3exo1
Examinez le fichier demo3exo1.cpp pour voir comment il fonctionne. Pour éditer le fichier, on vous conseille d'utiliser l'éditeur emacs. Pour lancer emacs faites:
emacs &
Vous pouvez compiler directement à partir de emacs. Pour faire ceci:

allez dans le menu Tools/Compile et éditer la ligne de commande en bas de la fenêtre pour lire

g++ -Wall demo3exo1.cpp –o demo3exo1

appuyez sur return

Comme résultat, vous obtiendrez une liste d'erreurs dans une fenêtre découpée en deux.

Exécutez le programme en tapant: demo1e1 sous Unix

Vous constaterez après la phase de compilation que le compilateur g++ a signalé une série de " warnings " ou " avertissements ", corrigez ces " warnings ". Mise à part
ces warnings des erreurs se sont glissées dans le code. Ces erreurs n’ont pas été détectées par le compilateur car ce sont des erreurs algorithmiques non liées au
langage de programmation. Cherchez ces erreurs et corrigez les.


Exercice 2

Que sera affiché par le programme suivant :

#include <iostream.h>

void f(int v, int* p, int & r) {

v = 120;

*p = 120;

r = 120;

cout << v << " " << *p << " " << r << endl;

}

int main() {

int x = 500, y = 500, z = 500;

f(x, &y, z);

cout << x << " " << y << " " << z << endl;

return 0;

}


Exercice 3

Écrire la fonction principale (main) contenant:

- un appel à la fonction changer_valeur

et permettant,

- d'afficher la valeur des paramètres qui seront passes à la fonction changer_valeur avant l'appel de cette fonction et après son appel.

La fonction changer_valeur est comme suit:

- ayant comme arguments deux variables entières, la première est passée par pointeur et le seconde par référence.

- permettant de modifier le contenu de ces deux variables.

Exemple

soit les deux variables entières:

vreference = 10;

vpointeur = 20;

l'appel de la fonction changer_valeur devra donner le résultat suivant:
vreference = 30;

vpointeur = 50;


Exercice 4
 

Passage par référence dans le cas de structure

Soit la structure date, ayant les 3 champs suivants:
 

struct Date {

int mois;

int jour;

int annee;

}

Écrire les fonctions suivantes:

void lire_date(Date& date)

  pour lire les champs de la structure Date à partir des entrées/sorties standards

void affiche_date(Date date)

  pour afficher les champs de la structure Date à partir des entrées/sorties standards
 

Et la fonction "main" qui appellera ces deux fonctions.