Vous êtes sur la page 1sur 2

Département d’Informatique

Faculté des Sciences, Université Ibn Zohr


Agadir

TD-2, C++, SMI5

Exercice 1 :
Donner le résultat d’exécution du programme ci-dessous sans faire appel à la machine (il
faut que le format d’affichage soit respecté).

#include<iostream>
using namespace std;
int x = -2;
int h(int & x){x = 2*x; return x;}
int g(int f){return x;}
int & f(int &x){x+=::x; return x;}
int main()
{
int x = 6;
f(::x) = h(x);
cout<<f(x)<<endl; cout<<g(x)<<endl; cout<<h(x)<<endl;
return 0;
}

Comparer vos résultats avec ceux obtenus en exécutant le programme sur votre PC.

Exercice 2 :
Soient les déclaratons (C++) suivantes:
int fct(int); // fonction I fct(n);
int fct(float); // fonction II fct(x);
void fct(int, float); // fonction III fct(n,x);
void fct(float,int); // fonction IV fct(x,n);
... fct(c);
int n,p; fct(n,p);
float x,y; fct(n,c);
char c; fct(n,z);
double z; fct(z,z);
Les appels ci-dessus (à droite) sont-ils corrects et, si oui, quelles seront les fonctions effec-
tivement appelées et les conversions éventuellement mises en place?

Exercice 3 :
Quel est l’affichage produit par le programme suivant ?
Que se passera-t-il si on rajoute les appels suivants à la fonction main :
f(c,n);
f();

Pr. Mohamed EL ANSARI Page 1/2


#include <iostream>
using namespace std;

void f (int x=10, float y=20);


void f (float m=30, int n=40); void f (int x, float y)
{
main() cout<<"sosie 1, x="<<x<<"\ty="<<y<<endl;
{ }
char c=’A’;
int n=0; void f (float m, int n)
float a=3.14; {
f(n); cout<<"sosie 2, m="<<m<<"\tn="<<n<<endl;
f(a); }
f(c);
f(n,a);
f(a,n);
}

Exercice 4 :
Ecrire un programme allouant des emplacements pour des tableaux d’entiers dont la taille
est fournie donnée. Les allocations se poursuivent jusqu’à ce que l’on aboutisse à un
débordement mémoire. L’exécution se présentera ainsi:
Donner la taille du tableau (en octets) = 100000000
Allocation bloc numéro : 1
Allocation bloc numéro : 2
Allocation bloc numéro : 3
Allocation bloc numéro : 4
Allocation bloc numéro : 5
Allocation bloc numéro : 6
Allocation bloc numéro : 7
Mémoire insuffisante - arr^ et exécution
Un autre exemple d’exécution:
Donner la taille du tableau (en octets) = 200000000
Allocation bloc numéro : 1
Allocation bloc numéro : 2
Allocation bloc numéro : 3
Mémoire insuffisante - arr^ et exécution

Exercice 5 :
Ecrire la macro-fonction qui calcule factoriel de n. Puis la fonction inline qui fait de même.
Montrer et expliquer sur un exemple que l’appel n’est pas réalisé correctement avec la macro-
fonction alors qu’il l’est avec la fonction.

Pr. Mohamed EL ANSARI Page 2/2

Vous aimerez peut-être aussi