Académique Documents
Professionnel Documents
Culture Documents
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();
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.