0% ont trouvé ce document utile (0 vote)
76 vues2 pages

Analyse de programmes C++ et mémoire

Transféré par

belfathi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
76 vues2 pages

Analyse de programmes C++ et mémoire

Transféré par

belfathi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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