SlideShare une entreprise Scribd logo
TD 1: C++,
NOUVELLES
POSSIBILITÉS
OBJECTIFS :
Découvrir les nouvelles possibilités apportées par le
langage C++ par rapport au langage C qui ne sont pas
véritablement liée à la Programmation Orientée Objet.
Exercice N°1
Écrire le programme suivant (correct en C comme en C++), en ne faisant appel qu'aux nouvelles possibilités du
langage C++ :
#include <stdio.h>
#include <malloc.h>
#define NbrValeurs 25
int main()
{
float *Valeurs, Somme=0.0;
int i;
/*réservation d’un espace mémoire pour les valeurs*/
Valeurs=(float *)malloc(sizeof(float)*NbrValeurs);
for(i=0;i<NbrValeurs;i++)
{
printf("donner la moyenne N°%dn”,i);
scanf("%f",&Valeurs[i]);
Somme= Somme + Valeurs[i];
}
printf("La somme de ces %d réels=%f", NbrValeurs,
Somme);
free(Valeurs);
return 0 ;
}
Correction
include <iostream>
using namespace std;
const int NbrValeurs =25;
int main()
{
float *Valeurs, Somme=0.0;
//réservation d’un espace mémoire pour les valeurs
Valeurs= new float[NbrValeurs];
for(int i=0;i<NbrValeurs;i++)
{
cout<<"donner la moyenne N°"<<i<<endl; cin>>Valeurs[i];
Somme= Somme + Valeurs[i];
}
cout<<"La somme de ces"<<NbrValeurs<<" réels="<<Somme;
delete []Valeurs;
return 0;
}
Exercice N°2
Soient les déclarations (C++) suivantes :
int fct (int) ; // fonction 1
int fct (float) ; // fonction 2
void fct (int, float) ; // fonction 3
void fct (float, int) ; // fonction 4
int n, p ;
float x, y ;
char c ;
double z ;
Les appels suivants sont-ils corrects et, si oui, quelles seront
les fonctions effectivement appelées et les conversions
éventuellement mises en place ?
a) fct (n) ;
b) fct (n, x) ;
c) fct (x) ;
d) fct (x, n) ;
e) fct (c) ;
f) fct (n, p) ;
g) fct (n, c) ;
h) fct (n, z) ;
i) fct (z, z) ;
Correction
Appel Correct ? Prototype Appelé Conversion
a) fct (n) ; Oui Fonction1 Aucune
b) fct (n, x) ; Oui Fonction3 Aucune
c) fct (x) ; Oui Fonction2 Aucune
d) fct (x, n) ; Oui Fonction4 Aucune
e) fct (c) ; Oui Fonction1 Char->int
f) fct (n, p) ; Non (ambigüité : deux prototypes sont possibles avec le
même nombre de conversions)
g) fct (n, c) ; Non (ambigüité : deux prototypes sont
possibles avec le même nombre de conversions)
h) fct (n, z) ; Oui Fonction3 Double->float
i) fct (z, z) ; Non (ambigüité : deux prototypes sont possibles avec le
même nombre de conversions)
Exercice N°3
• Remplir le tableau suivant en indiquant si chacun de ces appels est
correct ou non pour les prototypes 1, 2, 3, 4.
Soient les prototypes de fonctions suivants :
•void f (int x) ;
•void f (int &x) ;
•void f (const int & x) ;
•void f (int *x) ;
et soient les déclarations suivantes :
int n1(7) ;
int *n2=new int(9) ;
int &n3=*new int (13) ;
const int n4(18) ;
const int *n5=new int(15) ;
const int &n6=*new int(14) ;
Appel Prototype 1 Prototype 2 Prototype 3 Prototype 4
f(n1)
f(&n1)
f(n2)
f(*n2)
f(n3)
f(&n3)
f(n4)
f(&n4)
f(n5)
f(*n5)
f(n6)
f(&n6)
Correction
Soient les prototypes de fonctions suivants :
•void f (int x) ;
•void f (int &x) ;
•void f (const int & x) ;
• void f (int *x) ;
et soient les déclarations suivantes :
int n1(7) ;
int *n2=new int(9) ;
int &n3=*new int (13) ;
const int n4(18) ;
const int *n5=new int(15) ;
const int &n6=*new int(14) ;
Exercice N°4
• Soit le programme suivant :
int g1=1;
int g2=1;
int *ptr;
int *& f3(int x=1);
int *f1(int &x)
{x++;
return (&x);}
int &f2(int *&p)
{p=&g1;
(*p)++;
return *f3();}
int *& f3(int x)
{x++;
(*ptr)+=x;
return ptr;}
int main(){
1. ptr=&g2;
2. int &a=*ptr;
3. int *ptr1=f1(a);
4. (*ptr1)++;
5. int *&ptr2=f3(f2(ptr1));
6. (*ptr1)++;
7. (*ptr2)++;
return 0 ;}
Donner un tableau indiquant la valeur des variables g1, g2, ptr, ptr1, ptr2, et a après chacune des instructions numérotées
de 1 à 7.
Correction
g1 g2 ptr *ptr ptr1 *ptr1 ptr2 *ptr2 a
1 1 1 &g2 1 N.D N.D N.D N.D N.D
2 1 1 & g2 1 N.D N.D N.D N.D 1
3 1 2 & g2 2 & g2 2 N.D N.D 2
4 1 3 & g2 3 & g2 3 N.D N.D 3
5 2 11 & g2 11 &g1 2 & g2 11 11
6 3 11 & g2 11 & g1 3 & g2 11 11
7
3 12 & g2 12 & g1 3 & g2 12 12
Exercice N°5
Soit le programme suivant :
int g1=0;
int g2=0;
int *ptr;
int *& f4(int x=0);
int f1(int *p)
{ p=&g2;
(*p)++;
return (*p);}
int &f2(int *&p)
{ p=&g2;
(*p)++;
return *f4();}
int *f3(int &x)
{ x++;
return (&x);}
int *& f4(int x){
x++;
(*ptr)+=x;
return ptr;}
int main(){
1. ptr=&g1;
2. int &a=*ptr;
3. int *ptr1=f3(a);
4. (*ptr1)++;
5. int *&ptr2=f4(f2(ptr1));
6. (*ptr1)++;
7. (*ptr2)++;
8. a+=f1(ptr2);
9. (*ptr2)++ ;
return 0 ;}
Donner la valeur des variables g1, g2, ptr, ptr1, ptr2, et a après les instructions numérotées de 1 à 9.
Correction
g1 g2 ptr *ptr ptr1 *ptr1 ptr2 *ptr2 a
1 0 0 &g1 0 N.D N.D N.D N.D N.D
2 0 0 &g1 0 N.D N.D N.D N.D 0
3 1 0 &g1 1 &g1 1 N.D N.D 1
4 2 0 &g1 2 &g1 2 N.D N.D 2
5 7 1 &g1 7 &g2 1 &g1 7 7
6 7 2 &g1 7 &g2 2 &g1 7 7
7 8 2 &g1 8 &g2 2 &g1 8 8
8 11 3 &g1 11 &g2 3 &g1 11 11
9 12 3 &g1 12 &g2 3 &g1 12 12

Contenu connexe

Similaire à Correction-TD1.pdf

Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)
Hichem Kemali
 
02 Spécificité du C++ COURS SYS SYSSSSSS
02 Spécificité du C++  COURS SYS SYSSSSSS02 Spécificité du C++  COURS SYS SYSSSSSS
02 Spécificité du C++ COURS SYS SYSSSSSS
AyoubElmrabet6
 
C++11 en 12 exemples simples
C++11 en 12 exemples simplesC++11 en 12 exemples simples
C++11 en 12 exemples simples
Pethrvs
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
rezgui mohamed
 
cours algorithme
cours algorithmecours algorithme
cours algorithme
mohamednacim
 
Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Seance 3- Programmation en langage C
Seance 3- Programmation en langage C
Fahad Golra
 
C++11
C++11C++11
C++11
Pethrvs
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage cDaoua Lotfi
 
Ch8 correction exercices (1)
Ch8 correction exercices (1)Ch8 correction exercices (1)
Ch8 correction exercices (1)abdellah12
 
condition et boucle (2).pptx
condition et boucle  (2).pptxcondition et boucle  (2).pptx
condition et boucle (2).pptx
MohammedErritali2
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partie
Loic Yon
 
Les nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneLes nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ Moderne
Microsoft
 
TableauxDynamiques.pdf
TableauxDynamiques.pdfTableauxDynamiques.pdf
TableauxDynamiques.pdf
tf9bpy64sn2nweoe3jk
 
TableauxDynamiques.pdf
TableauxDynamiques.pdfTableauxDynamiques.pdf
TableauxDynamiques.pdf
tf9bpy64sn2nweoe3jk
 
Formation Langage c.pptx
Formation Langage c.pptxFormation Langage c.pptx
Formation Langage c.pptx
Valdy Ngouabira
 
eExercices corrigesdivers
eExercices corrigesdiverseExercices corrigesdivers
eExercices corrigesdivers
Hajar Yazine
 
Exercicescorrigesdivers
ExercicescorrigesdiversExercicescorrigesdivers
ExercicescorrigesdiversKarim Amane
 
Chapitre 04 : les fonctions
Chapitre 04 : les fonctionsChapitre 04 : les fonctions
Chapitre 04 : les fonctions
L’Université Hassan 1er Settat
 

Similaire à Correction-TD1.pdf (20)

Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)
 
02 Spécificité du C++ COURS SYS SYSSSSSS
02 Spécificité du C++  COURS SYS SYSSSSSS02 Spécificité du C++  COURS SYS SYSSSSSS
02 Spécificité du C++ COURS SYS SYSSSSSS
 
C4 fonctions
C4 fonctionsC4 fonctions
C4 fonctions
 
C++11 en 12 exemples simples
C++11 en 12 exemples simplesC++11 en 12 exemples simples
C++11 en 12 exemples simples
 
Récursivité
RécursivitéRécursivité
Récursivité
 
Cours structures des données (langage c)
Cours structures des données (langage c)Cours structures des données (langage c)
Cours structures des données (langage c)
 
cours algorithme
cours algorithmecours algorithme
cours algorithme
 
Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Seance 3- Programmation en langage C
Seance 3- Programmation en langage C
 
C++11
C++11C++11
C++11
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage c
 
Ch8 correction exercices (1)
Ch8 correction exercices (1)Ch8 correction exercices (1)
Ch8 correction exercices (1)
 
condition et boucle (2).pptx
condition et boucle  (2).pptxcondition et boucle  (2).pptx
condition et boucle (2).pptx
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partie
 
Les nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ ModerneLes nouveautés de C++11 : Ecrire du C++ Moderne
Les nouveautés de C++11 : Ecrire du C++ Moderne
 
TableauxDynamiques.pdf
TableauxDynamiques.pdfTableauxDynamiques.pdf
TableauxDynamiques.pdf
 
TableauxDynamiques.pdf
TableauxDynamiques.pdfTableauxDynamiques.pdf
TableauxDynamiques.pdf
 
Formation Langage c.pptx
Formation Langage c.pptxFormation Langage c.pptx
Formation Langage c.pptx
 
eExercices corrigesdivers
eExercices corrigesdiverseExercices corrigesdivers
eExercices corrigesdivers
 
Exercicescorrigesdivers
ExercicescorrigesdiversExercicescorrigesdivers
Exercicescorrigesdivers
 
Chapitre 04 : les fonctions
Chapitre 04 : les fonctionsChapitre 04 : les fonctions
Chapitre 04 : les fonctions
 

Plus de MbarkiIsraa

NP-complet.ppt
NP-complet.pptNP-complet.ppt
NP-complet.ppt
MbarkiIsraa
 
Format.pptx
Format.pptxFormat.pptx
Format.pptx
MbarkiIsraa
 
correctionTD2JAVA.pdf
correctionTD2JAVA.pdfcorrectionTD2JAVA.pdf
correctionTD2JAVA.pdf
MbarkiIsraa
 
correctionTD-1-vhdl2947.pptx
correctionTD-1-vhdl2947.pptxcorrectionTD-1-vhdl2947.pptx
correctionTD-1-vhdl2947.pptx
MbarkiIsraa
 
PCD YasBas.pptx
PCD YasBas.pptxPCD YasBas.pptx
PCD YasBas.pptx
MbarkiIsraa
 
PLNE.pptx
PLNE.pptxPLNE.pptx
PLNE.pptx
MbarkiIsraa
 
Chapitre3_Partie1.pdf
Chapitre3_Partie1.pdfChapitre3_Partie1.pdf
Chapitre3_Partie1.pdf
MbarkiIsraa
 
Chapitre2_Partie1.pdf
Chapitre2_Partie1.pdfChapitre2_Partie1.pdf
Chapitre2_Partie1.pdf
MbarkiIsraa
 
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
MbarkiIsraa
 
support_cours.pdf
support_cours.pdfsupport_cours.pdf
support_cours.pdf
MbarkiIsraa
 
c h02EspaceProbTr.pdf
c h02EspaceProbTr.pdfc h02EspaceProbTr.pdf
c h02EspaceProbTr.pdf
MbarkiIsraa
 
Ordonnanc-Proc_Threads (1).pdf
Ordonnanc-Proc_Threads (1).pdfOrdonnanc-Proc_Threads (1).pdf
Ordonnanc-Proc_Threads (1).pdf
MbarkiIsraa
 
prog_reg.pptx
prog_reg.pptxprog_reg.pptx
prog_reg.pptx
MbarkiIsraa
 
correctionTD-2-vhdl2949.pptx
correctionTD-2-vhdl2949.pptxcorrectionTD-2-vhdl2949.pptx
correctionTD-2-vhdl2949.pptx
MbarkiIsraa
 
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfChapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
MbarkiIsraa
 
Chapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdfChapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdf
MbarkiIsraa
 
Complexité_ENSI_2011.ppt
Complexité_ENSI_2011.pptComplexité_ENSI_2011.ppt
Complexité_ENSI_2011.ppt
MbarkiIsraa
 
DiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdf
DiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdfDiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdf
DiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdf
MbarkiIsraa
 
UML.Objet.4pp.pdf
UML.Objet.4pp.pdfUML.Objet.4pp.pdf
UML.Objet.4pp.pdf
MbarkiIsraa
 

Plus de MbarkiIsraa (19)

NP-complet.ppt
NP-complet.pptNP-complet.ppt
NP-complet.ppt
 
Format.pptx
Format.pptxFormat.pptx
Format.pptx
 
correctionTD2JAVA.pdf
correctionTD2JAVA.pdfcorrectionTD2JAVA.pdf
correctionTD2JAVA.pdf
 
correctionTD-1-vhdl2947.pptx
correctionTD-1-vhdl2947.pptxcorrectionTD-1-vhdl2947.pptx
correctionTD-1-vhdl2947.pptx
 
PCD YasBas.pptx
PCD YasBas.pptxPCD YasBas.pptx
PCD YasBas.pptx
 
PLNE.pptx
PLNE.pptxPLNE.pptx
PLNE.pptx
 
Chapitre3_Partie1.pdf
Chapitre3_Partie1.pdfChapitre3_Partie1.pdf
Chapitre3_Partie1.pdf
 
Chapitre2_Partie1.pdf
Chapitre2_Partie1.pdfChapitre2_Partie1.pdf
Chapitre2_Partie1.pdf
 
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
(GLII-Spécification, vérification et qualité-chapitres 1 et 2-2013-2014.pdf
 
support_cours.pdf
support_cours.pdfsupport_cours.pdf
support_cours.pdf
 
c h02EspaceProbTr.pdf
c h02EspaceProbTr.pdfc h02EspaceProbTr.pdf
c h02EspaceProbTr.pdf
 
Ordonnanc-Proc_Threads (1).pdf
Ordonnanc-Proc_Threads (1).pdfOrdonnanc-Proc_Threads (1).pdf
Ordonnanc-Proc_Threads (1).pdf
 
prog_reg.pptx
prog_reg.pptxprog_reg.pptx
prog_reg.pptx
 
correctionTD-2-vhdl2949.pptx
correctionTD-2-vhdl2949.pptxcorrectionTD-2-vhdl2949.pptx
correctionTD-2-vhdl2949.pptx
 
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfChapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
 
Chapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdfChapitre 2 -Complexité des problèmes avec correction.pdf
Chapitre 2 -Complexité des problèmes avec correction.pdf
 
Complexité_ENSI_2011.ppt
Complexité_ENSI_2011.pptComplexité_ENSI_2011.ppt
Complexité_ENSI_2011.ppt
 
DiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdf
DiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdfDiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdf
DiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdf
 
UML.Objet.4pp.pdf
UML.Objet.4pp.pdfUML.Objet.4pp.pdf
UML.Objet.4pp.pdf
 

Correction-TD1.pdf

  • 1. TD 1: C++, NOUVELLES POSSIBILITÉS OBJECTIFS : Découvrir les nouvelles possibilités apportées par le langage C++ par rapport au langage C qui ne sont pas véritablement liée à la Programmation Orientée Objet.
  • 2. Exercice N°1 Écrire le programme suivant (correct en C comme en C++), en ne faisant appel qu'aux nouvelles possibilités du langage C++ : #include <stdio.h> #include <malloc.h> #define NbrValeurs 25 int main() { float *Valeurs, Somme=0.0; int i; /*réservation d’un espace mémoire pour les valeurs*/ Valeurs=(float *)malloc(sizeof(float)*NbrValeurs); for(i=0;i<NbrValeurs;i++) { printf("donner la moyenne N°%dn”,i); scanf("%f",&Valeurs[i]); Somme= Somme + Valeurs[i]; } printf("La somme de ces %d réels=%f", NbrValeurs, Somme); free(Valeurs); return 0 ; }
  • 3. Correction include <iostream> using namespace std; const int NbrValeurs =25; int main() { float *Valeurs, Somme=0.0; //réservation d’un espace mémoire pour les valeurs Valeurs= new float[NbrValeurs]; for(int i=0;i<NbrValeurs;i++) { cout<<"donner la moyenne N°"<<i<<endl; cin>>Valeurs[i]; Somme= Somme + Valeurs[i]; } cout<<"La somme de ces"<<NbrValeurs<<" réels="<<Somme; delete []Valeurs; return 0; }
  • 4. Exercice N°2 Soient les déclarations (C++) suivantes : int fct (int) ; // fonction 1 int fct (float) ; // fonction 2 void fct (int, float) ; // fonction 3 void fct (float, int) ; // fonction 4 int n, p ; float x, y ; char c ; double z ; Les appels suivants sont-ils corrects et, si oui, quelles seront les fonctions effectivement appelées et les conversions éventuellement mises en place ? a) fct (n) ; b) fct (n, x) ; c) fct (x) ; d) fct (x, n) ; e) fct (c) ; f) fct (n, p) ; g) fct (n, c) ; h) fct (n, z) ; i) fct (z, z) ;
  • 5. Correction Appel Correct ? Prototype Appelé Conversion a) fct (n) ; Oui Fonction1 Aucune b) fct (n, x) ; Oui Fonction3 Aucune c) fct (x) ; Oui Fonction2 Aucune d) fct (x, n) ; Oui Fonction4 Aucune e) fct (c) ; Oui Fonction1 Char->int f) fct (n, p) ; Non (ambigüité : deux prototypes sont possibles avec le même nombre de conversions) g) fct (n, c) ; Non (ambigüité : deux prototypes sont possibles avec le même nombre de conversions) h) fct (n, z) ; Oui Fonction3 Double->float i) fct (z, z) ; Non (ambigüité : deux prototypes sont possibles avec le même nombre de conversions)
  • 6. Exercice N°3 • Remplir le tableau suivant en indiquant si chacun de ces appels est correct ou non pour les prototypes 1, 2, 3, 4. Soient les prototypes de fonctions suivants : •void f (int x) ; •void f (int &x) ; •void f (const int & x) ; •void f (int *x) ; et soient les déclarations suivantes : int n1(7) ; int *n2=new int(9) ; int &n3=*new int (13) ; const int n4(18) ; const int *n5=new int(15) ; const int &n6=*new int(14) ; Appel Prototype 1 Prototype 2 Prototype 3 Prototype 4 f(n1) f(&n1) f(n2) f(*n2) f(n3) f(&n3) f(n4) f(&n4) f(n5) f(*n5) f(n6) f(&n6)
  • 7. Correction Soient les prototypes de fonctions suivants : •void f (int x) ; •void f (int &x) ; •void f (const int & x) ; • void f (int *x) ; et soient les déclarations suivantes : int n1(7) ; int *n2=new int(9) ; int &n3=*new int (13) ; const int n4(18) ; const int *n5=new int(15) ; const int &n6=*new int(14) ;
  • 8. Exercice N°4 • Soit le programme suivant : int g1=1; int g2=1; int *ptr; int *& f3(int x=1); int *f1(int &x) {x++; return (&x);} int &f2(int *&p) {p=&g1; (*p)++; return *f3();} int *& f3(int x) {x++; (*ptr)+=x; return ptr;} int main(){ 1. ptr=&g2; 2. int &a=*ptr; 3. int *ptr1=f1(a); 4. (*ptr1)++; 5. int *&ptr2=f3(f2(ptr1)); 6. (*ptr1)++; 7. (*ptr2)++; return 0 ;} Donner un tableau indiquant la valeur des variables g1, g2, ptr, ptr1, ptr2, et a après chacune des instructions numérotées de 1 à 7.
  • 9. Correction g1 g2 ptr *ptr ptr1 *ptr1 ptr2 *ptr2 a 1 1 1 &g2 1 N.D N.D N.D N.D N.D 2 1 1 & g2 1 N.D N.D N.D N.D 1 3 1 2 & g2 2 & g2 2 N.D N.D 2 4 1 3 & g2 3 & g2 3 N.D N.D 3 5 2 11 & g2 11 &g1 2 & g2 11 11 6 3 11 & g2 11 & g1 3 & g2 11 11 7 3 12 & g2 12 & g1 3 & g2 12 12
  • 10. Exercice N°5 Soit le programme suivant : int g1=0; int g2=0; int *ptr; int *& f4(int x=0); int f1(int *p) { p=&g2; (*p)++; return (*p);} int &f2(int *&p) { p=&g2; (*p)++; return *f4();} int *f3(int &x) { x++; return (&x);} int *& f4(int x){ x++; (*ptr)+=x; return ptr;} int main(){ 1. ptr=&g1; 2. int &a=*ptr; 3. int *ptr1=f3(a); 4. (*ptr1)++; 5. int *&ptr2=f4(f2(ptr1)); 6. (*ptr1)++; 7. (*ptr2)++; 8. a+=f1(ptr2); 9. (*ptr2)++ ; return 0 ;} Donner la valeur des variables g1, g2, ptr, ptr1, ptr2, et a après les instructions numérotées de 1 à 9.
  • 11. Correction g1 g2 ptr *ptr ptr1 *ptr1 ptr2 *ptr2 a 1 0 0 &g1 0 N.D N.D N.D N.D N.D 2 0 0 &g1 0 N.D N.D N.D N.D 0 3 1 0 &g1 1 &g1 1 N.D N.D 1 4 2 0 &g1 2 &g1 2 N.D N.D 2 5 7 1 &g1 7 &g2 1 &g1 7 7 6 7 2 &g1 7 &g2 2 &g1 7 7 7 8 2 &g1 8 &g2 2 &g1 8 8 8 11 3 &g1 11 &g2 3 &g1 11 11 9 12 3 &g1 12 &g2 3 &g1 12 12