SlideShare une entreprise Scribd logo
1  sur  11
Télécharger pour lire hors ligne
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

Tendances

Exposé Cloisons
Exposé CloisonsExposé Cloisons
Exposé Cloisonsjexpoz
 
Rapport Dimensionnement BA
Rapport Dimensionnement BARapport Dimensionnement BA
Rapport Dimensionnement BAClément Lay
 
binayate presriptive.pdf
binayate presriptive.pdfbinayate presriptive.pdf
binayate presriptive.pdfjekaw2
 
Chantier Condo Lowneys
Chantier Condo LowneysChantier Condo Lowneys
Chantier Condo Lowneystergarzo
 
Les étapes de la construction
Les étapes de la constructionLes étapes de la construction
Les étapes de la constructionZahir Hadji
 
Présentation cours-incendie
Présentation cours-incendiePrésentation cours-incendie
Présentation cours-incendiecommandz
 
CLS Histoplasmosis.pptx
CLS Histoplasmosis.pptxCLS Histoplasmosis.pptx
CLS Histoplasmosis.pptxYadav Raj
 
Systemic mycoses m
Systemic mycoses mSystemic mycoses m
Systemic mycoses mNaila Qamar
 
Livre digital assad chabane
Livre digital assad chabaneLivre digital assad chabane
Livre digital assad chabaneCHABANE ASSAD
 
BIM 101 : Initiation au BIM et ses technologies
BIM 101 : Initiation au BIM et ses technologiesBIM 101 : Initiation au BIM et ses technologies
BIM 101 : Initiation au BIM et ses technologiesGeomap GIS America
 

Tendances (20)

Chapitre 02 : Variables, Expressions et Instructions
Chapitre 02 : Variables, Expressions et InstructionsChapitre 02 : Variables, Expressions et Instructions
Chapitre 02 : Variables, Expressions et Instructions
 
Chapitre 4 rdm
Chapitre 4 rdmChapitre 4 rdm
Chapitre 4 rdm
 
HIV AND PTB
HIV AND PTBHIV AND PTB
HIV AND PTB
 
Inflation
InflationInflation
Inflation
 
2_2020_07_09!12_00_08_AM.ppt
2_2020_07_09!12_00_08_AM.ppt2_2020_07_09!12_00_08_AM.ppt
2_2020_07_09!12_00_08_AM.ppt
 
Exposé Cloisons
Exposé CloisonsExposé Cloisons
Exposé Cloisons
 
Rapport Dimensionnement BA
Rapport Dimensionnement BARapport Dimensionnement BA
Rapport Dimensionnement BA
 
La Primera Guerra Mundial
La Primera Guerra MundialLa Primera Guerra Mundial
La Primera Guerra Mundial
 
binayate presriptive.pdf
binayate presriptive.pdfbinayate presriptive.pdf
binayate presriptive.pdf
 
Chantier Condo Lowneys
Chantier Condo LowneysChantier Condo Lowneys
Chantier Condo Lowneys
 
Fungus Part II
Fungus Part IIFungus Part II
Fungus Part II
 
Les étapes de la construction
Les étapes de la constructionLes étapes de la construction
Les étapes de la construction
 
Présentation cours-incendie
Présentation cours-incendiePrésentation cours-incendie
Présentation cours-incendie
 
CLS Histoplasmosis.pptx
CLS Histoplasmosis.pptxCLS Histoplasmosis.pptx
CLS Histoplasmosis.pptx
 
Systemic mycoses m
Systemic mycoses mSystemic mycoses m
Systemic mycoses m
 
Livre digital assad chabane
Livre digital assad chabaneLivre digital assad chabane
Livre digital assad chabane
 
Planchers 02
Planchers 02Planchers 02
Planchers 02
 
BIM 101 : Initiation au BIM et ses technologies
BIM 101 : Initiation au BIM et ses technologiesBIM 101 : Initiation au BIM et ses technologies
BIM 101 : Initiation au BIM et ses technologies
 
Brique 02
Brique 02Brique 02
Brique 02
 
Guide de travaux de chantiers
Guide de travaux de chantiersGuide de travaux de chantiers
Guide de travaux de chantiers
 

Similaire à Correction-TD1.pdf

Cours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMACours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMALoic Yon
 
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 SYSSSSSSAyoubElmrabet6
 
C++11 en 12 exemples simples
C++11 en 12 exemples simplesC++11 en 12 exemples simples
C++11 en 12 exemples simplesPethrvs
 
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
 
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
 
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).pptxMohammedErritali2
 
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 partieLoic 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++ ModerneMicrosoft
 
Formation Langage c.pptx
Formation Langage c.pptxFormation Langage c.pptx
Formation Langage c.pptxValdy Ngouabira
 
eExercices corrigesdivers
eExercices corrigesdiverseExercices corrigesdivers
eExercices corrigesdiversHajar Yazine
 
Exercicescorrigesdivers
ExercicescorrigesdiversExercicescorrigesdivers
ExercicescorrigesdiversKarim Amane
 

Similaire à Correction-TD1.pdf (20)

Cours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMACours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMA
 
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
 

Plus de MbarkiIsraa

correctionTD2JAVA.pdf
correctionTD2JAVA.pdfcorrectionTD2JAVA.pdf
correctionTD2JAVA.pdfMbarkiIsraa
 
correctionTD-1-vhdl2947.pptx
correctionTD-1-vhdl2947.pptxcorrectionTD-1-vhdl2947.pptx
correctionTD-1-vhdl2947.pptxMbarkiIsraa
 
Chapitre3_Partie1.pdf
Chapitre3_Partie1.pdfChapitre3_Partie1.pdf
Chapitre3_Partie1.pdfMbarkiIsraa
 
Chapitre2_Partie1.pdf
Chapitre2_Partie1.pdfChapitre2_Partie1.pdf
Chapitre2_Partie1.pdfMbarkiIsraa
 
(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.pdfMbarkiIsraa
 
support_cours.pdf
support_cours.pdfsupport_cours.pdf
support_cours.pdfMbarkiIsraa
 
c h02EspaceProbTr.pdf
c h02EspaceProbTr.pdfc h02EspaceProbTr.pdf
c h02EspaceProbTr.pdfMbarkiIsraa
 
Ordonnanc-Proc_Threads (1).pdf
Ordonnanc-Proc_Threads (1).pdfOrdonnanc-Proc_Threads (1).pdf
Ordonnanc-Proc_Threads (1).pdfMbarkiIsraa
 
correctionTD-2-vhdl2949.pptx
correctionTD-2-vhdl2949.pptxcorrectionTD-2-vhdl2949.pptx
correctionTD-2-vhdl2949.pptxMbarkiIsraa
 
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.pdfMbarkiIsraa
 
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.pdfMbarkiIsraa
 
Complexité_ENSI_2011.ppt
Complexité_ENSI_2011.pptComplexité_ENSI_2011.ppt
Complexité_ENSI_2011.pptMbarkiIsraa
 
DiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdf
DiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdfDiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdf
DiagrammeSequence&DiagrammaEtatTransition&DiagrammeActivité.pdfMbarkiIsraa
 
UML.Objet.4pp.pdf
UML.Objet.4pp.pdfUML.Objet.4pp.pdf
UML.Objet.4pp.pdfMbarkiIsraa
 

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