Vous êtes sur la page 1sur 61

TRAVAUX DIRIGES ET CORRIGES EN C++/GE3/2022-2023

Exercice 1
a) Ecrire un programme qui permet de calculer le produit de deux nombres
sans effectuer la multiplication : × = + +. . . +
b) Ecrire un programme qui permet de calculer le quotient de la division d'un
nombre par un autre sans effectuer la division.
c) Ecrire un programme qui permet d'afficher toutes les tables de
multiplication de 1à 1. On affichera une seule table à la fois et chaque
affichage va durer 15 secondes.
d) Ecrire un programme qui pour valeur de n et p fournir à l'utilisateur
(p ≤ n) calcul et affiche Cpn
Solution
a) # include <iostream>
using namespace std;
int main()
{ int a,b,p,i;
cout<<"\n"<<"Veuillez entrer les nombres a et b:";
cin>>a>>b;
p=0;
for( i=1;i<=b;i++)
{p=p+a;
}
cout<<a<<"par"<<b<<"="<<p;
return 0;
}
b) # include <iostream>
using namespace std;
int main()
{ int divd,divsr,quotient,frac,r,k;
cout<<"\n Entrer la Dividende et le Diviseur:";
cin>>divd>>divsr;
quotient=0;
frac=0;
k=divd;
while (k>=divsr)
{ k-=divsr;
quotient++;
}
r=k;

MARTINIEN||C++_APLLICATION 1
if(r!=0)
{ while (r<divsr)
{ r=1000*r;
}
while (r>=divsr)
{ r-=divsr;
frac++;
}
cout<<"\n Le quotient vaut:"<<quotient<<","<<frac;
}

else
{cout<<"\n Le quotient vaut:"<<quotient<< "et il reste
:"<<k;
}
}

c) #include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
int main()
{
int max(12);
int I,J;

for (I=0; I<= max;I++)


{cout<<"TABLE DE MULTIPLICATION DE"<<I<<"FOIS";
for (J=0; J<= max;J++)
{ cout<<"\n"<<setw(3)<<
I<<setw(3)<<"*"<<J<<"="<<setw(3)<< I*J;
cout<<"\n";
}
Sleep(3000);
system("cls");

return 0;
}

MARTINIEN||C++_APLLICATION 2
d) #include <iostream>
#include <windows.h>
using namespace std;
int n,p;
long nfact,pfact,n_pfact,Comb;
long factorielle(short);
int main()
{
do
{ system("Cls");
cout<<"\n Donner les valeurs de n et p avec n<p svp:";
cin>>n>>p;
} while(p>n);
nfact=factorielle(n);
pfact=factorielle(p);
n_pfact=factorielle(n-p);
Comb=nfact/((pfact)*(n_pfact));
cout<<"Le r\202sultat vaut:"<<" "<<Comb;
return 0;
}
//Définition de la fonction factorielle

long factorielle( short x)


{long factor (1),i;
if(x==0||x==1)
{factor=1;
}
else
{for(i=1;i<=x;i++)
{ factor=factor*i;
}
}
return factor;
}
Exercice 2 :
1- (Nombres d'Armstrong) : On appelle nombres d'Armstrong les nombres
entiers tels que la somme des cubes de leurs chiffres (en base 10) est égale
au nombre lui-même.
Exemple : 13+ 53+ 33= 153

MARTINIEN||C++_APLLICATION 3
Écrire un programme en C++ qui affiche tous les nombres d'Armstrong
inférieurs à 1000000.
2- On vous propose ci-dessous un programme en C++, utilisant un tableau
pour stocker des températures expérimentales, rechercher la température
minimale et en calculer la moyenne.
3- Ecrire un programme qui permet d'afficher le triangle de Pascal
4- Ecrire un programme qui permet de calculer la combinaison récursive.
5- Ecrire un programme qui fait de la couleur animée.
6- Ecrire un programme qui calcule la Combinaison
Solution
1- #include<iostream>
#include<cmath>
using namespace std;
int main ()
{
int nb,a,tmp,s(0);
cout<<"Entrer un nombre:";
cin>>nb;
tmp=nb;
while(nb>0)
{
a=nb%10;
s=s+(a*a*a);
nb=(nb/10);
}
if(tmp==s)
cout<<tmp<<"\t est un nombre de Armstrong";
else
cout<<tmp <<"\t n'est pas un nombre Armstrong",tmp;
return 0;
}
2- #include <iostream>
#define DIM 5
using namespace std;
typedef float tableau[DIM]; //un tableau contient 20 float
void afficher(tableau tab, int nb) ;
void saisir(tableau tab, int & nb) ;
float temp_min(tableau tab, int nb) ;
float calculer_moyenne(tableau tab, int nb) ;

MARTINIEN||C++_APLLICATION 4
int main()
{ tableau t;
int nb;
float min,moyenne;
saisir(t,nb);
afficher(t,nb);
min = temp_min(t,nb) ;
cout<<"La temp\202rature minimale obtenue est :
"<<min<<"\n";
moyenne = calculer_moyenne(t,nb);
cout<<"La moyenne vaut : "<<moyenne<<"\n";
return 0;
}
void afficher(tableau tab, int nb)
{
int i;
for(i=0;i<nb;i++)
cout<<i+1<<"eme temp\202rature : "<<tab[i]<<"\n";
}
void saisir(tableau tab, int & nb)
{
int i;
do
{ cout<<"Nombre de temp\202ratures, entre 1 et
"<<DIM<<" ? ";
cin>>nb;
}
while (nb<=0 || nb>DIM);
for(i=0;i<nb;i++)
{ cout<<i+1<<"\201me temp\202rature ? ";
cin>>tab[i];
}
}

float temp_min(tableau tab, int nb)


{ float Min,pMin;
Min=tab[0];
pMin=0;
for(int i=1;i<nb;i++)
{
if(Min>tab[i])
{

MARTINIEN||C++_APLLICATION 5
Min=tab[i];
pMin=i;
}
}
}

float calculer_moyenne(tableau tab, int nb)


{float S,M;
for(int i=0;i<nb;i++)
{
S=S+tab[i];
}
M=S/nb;
}
3- #include <iostream>
using namespace std;
int Combi(int n,int p)
{
if(n==p||p==0)
return 1;
else
return (Combi(n-1,p-1)+Combi(n-1,p));
}
int main()
{
int N;
do {
cout<<"Entrez le nombre de lignes ? ";
cin >>N;
}
while(N<1 || N>15);
for(int n=0; n<=N-1;n++)
{
for(int p=0; p<=n;p++)
{
cout<<Combi(n,p)<<"\t";
}
cout<<endl;
}
return 0;
}
4- #include <iostream>

MARTINIEN||C++_APLLICATION 6
using namespace std;
int Combi(int n,int p)
{
if(n==p||p==0)
return 1;
else
return (Combi(n-1,p-1)+Combi(n-1,p));
}
int main()
{
int N,P;
do {
cout<<"Entrez N ? ";
cin >>N;
}
while(N<0);
do
{
cout<<"Entrez P ? ";
cin >>P;
}
while(P<0|| P>N);
cout<<"C("<<N<<";"<<P<<")="<<Combi(N,P)<<endl;
return 0;
}
5- #include <iostream>
#include <windows.h>
using namespace std;
int i, c=4;
void couleurs(void);
int main()
{
couleurs();
return 0;
}
void couleurs(void)
{
while(c<5)
{
system("color 47");Sleep(10);
system("color 20");Sleep(10);
system("color 10");Sleep(10);

MARTINIEN||C++_APLLICATION 7
system("color 30");Sleep(10);
system("color 0f");Sleep(10);
system("color 80");Sleep(10);
system("color f0");Sleep(10);
}
}
6- #include <iostream>
using namespace std;

unsigned long int Factor(int n)


{
if(n==0||n==1)
return 1;
else
return (n*Factor(n-1));
}
unsigned long int Combi(int n,int p)
{
return(Factor(n)/(Factor(p)*(Factor(n-p))));
}
int main()
{
int N,P;
do {
cout<<"Entrez N ? ";
cin >>N;
}
while(N<0);
do
{
cout<<"Entrez P ? ";
cin >>P;
}
while(P<0|| P>N);
cout<<"C("<<N<<";"<<P<<")="<<Combi(N,P)<<endl;
return 0;
}
Exercice 3 :
1- Ecrire un programme C++ qui permet de :

MARTINIEN||C++_APLLICATION 8
- Remplir un tableau de N entiers (N étant un entier à saisir au clavier ne
dépassant pas 50)
- Afficher les éléments du tableau ainsi rempli
- Calculer et afficher la moyenne des éléments du tableau
- Rechercher et afficher le plus petit élément du tableau
- Rechercher et afficher le plus grand élément du tableau
- Trier par ordre croissant ce tableau et après l’afficher
2- Ecrire un programme en C++ qui faire la multiplication de deux
matrices.
3- Ecrire un programme qui recherche une valeur (saisie au clavier) dans
un tableau d'entiers, affiche un message pour dire oui ou non la valeur est
retrouvée.
Solution
1- #include<iostream>
using namespace std;
int main()
{int N,TAB[50],S(0),Min,pMin,Max,pMax,Ech;
do{
cout<<"Entrez le nombre d'elements ? ";
cin>>N;
}
while(N<1 ||N>50);
//Remplissage du tableau;
for(int i=0; i<N;i++)
{
cout<<"Entrez l'element numero " <<i+1<<" ? ";
cin>>TAB[i];
}
//Affichage du tableau
cout<<endl<<"Tableau = | ";
for(int i=0;i<N;i++)
{
cout<<TAB[i]<<" | ";
}
//Calcul et affichage de la moyenne
for(int i=0;i<N;i++)
{

MARTINIEN||C++_APLLICATION 9
S=S+TAB[i];
}
cout<<endl<<"Moyenne = "<<(float)S/N<<endl;
//Recherche et affichage du minimum
Min=TAB[0];
pMin=0;
for(int i=1;i<N;i++)
{
if(Min>TAB[i])
{
Min=TAB[i];

pMin=i;
}
}
cout<<endl<<"Minimum = "<<Min<<" et Position =
"<<pMin<<endl;
//Recherche et affichage du maximun
Max=TAB[0];
pMax=0;
for(int i=1;i<N;i++)
{
if(Max<TAB[i])
{
Max=TAB[i];
pMax=i;
}
}
cout<<endl<<"Maximun = "<<Max<<" et Position =
"<<pMax<<endl;
//Tri du tableau
for(int Tour=1; Tour<=N-1;Tour++)
{
for(int i=0;i<=N-2;i++)
{
if(TAB[i]<TAB[i+1])
{
Ech=TAB[i];
TAB[i]=TAB[i+1];
TAB[i+1]=Ech;
}
}

MARTINIEN||C++_APLLICATION 10
}
//Affichage du tableau
cout<<endl<<"Tableau = | ";
for(int i=0;i<N;i++)
{
cout<<TAB[i]<<" | ";
}
return 0;
}
2- # include <iostream>
using namespace std;

void entrerDonne(int premierMatrice[][10], int


secondMatrice[][10], int premiereligne, int premierecolonne,int
secondeligne, int secondecolonne);
void multiplieMatrice(int premierMatrice[][10], int
secondMatrice[][10],int mult[][10], int premiereligne, int
premierecolonne,int secondeligne, int secondecolonne);
void affiche(int mult[][10], int premiereligne, int
secondecolonne);

int main()
{
int premierMatrice[10][10], secondMatrice[10][10],
mult[10][10], premiereligne,
premierecolonne,secondeligne,secondecolonne, i, j, k;

cout << "Enter le nombre de lignes et colonnes de la


premiere matrice: ";
cin >> premiereligne>>premierecolonne;

cout << "Enter le nombre de lignes et colonnes de la


seconde matrice : ";
cin >>secondeligne>>secondecolonne;

// Si la premiere colonne de la matrice n'est pas égal au


nombre de colonne de la deuxième matrice ,demandez à
l'utilisateur d'entrer à nouveau la taille de la matrice .
while (premierecolonne != secondeligne)
{
cout << "Erreur! Colonne de la premiere matrice
n'est pas égal au nombre de ligne de la second matrice." << endl;

MARTINIEN||C++_APLLICATION 11
cout << "Enter le nombre de lignes et colonnes de
la premiere matrice: ";
cin >> premiereligne>>premierecolonne;
cout << "Enter le nombre de lignes et colonnes de
la seconde matrice: ";
cin >>secondeligne>>secondecolonne;
}

// Function to take matrices data


entrerDonne(premierMatrice, secondMatrice, premiereligne,
premierecolonne, secondeligne, secondecolonne);

// Function to multiply two matrices.


multiplieMatrice( premierMatrice, secondMatrice, mult,
premiereligne, premierecolonne, secondeligne, secondecolonne);

// Function to display resultant matrix after multiplication.


affiche(mult,premiereligne,secondecolonne);

return 0;
}

void entrerDonne(int premierMatrice[][10], int


secondMatrice[][10], int premiereligne, int premierecolonne,int
secondeligne, int secondecolonne)
{
int i, j;
cout << endl << "Enter les elements de la matrice 1:" <<
endl;
for(i = 0; i < premiereligne; ++i)
{
for(j = 0; j < premierecolonne; ++j)
{
cout << "Entrer les elements a"<< i + 1 << j
+ 1 << ": ";
cin >> premierMatrice[i][j];
}
}

cout << endl << "Enter les elements de la matrice 2:" <<
endl;
for(i = 0; i < secondeligne; ++i)

MARTINIEN||C++_APLLICATION 12
{
for(j = 0; j < secondecolonne; ++j)
{
cout << "Entrer les elements b" << i + 1 << j
+ 1 << ": ";
cin >> secondMatrice[i][j];
}
}
}

void multiplieMatrice(int premierMatrice[][10], int


secondMatrice[][10],int mult[][10], int premiereligne, int
premierecolonne,int secondeligne, int secondecolonne)
{
int i, j, k;

// Initializing elements of matrix mult to 0.


for(i = 0; i < premiereligne; ++i)
{
for(j = 0; j < secondecolonne; ++j)
{
mult[i][j] = 0;
}
}

// Multiplying matrix firstMatrix and secondMatrix and


storing in array mult.
for(i = 0; i < premierecolonne; ++i)
{
for(j = 0; j < secondecolonne; ++j)
{
for(k=0; k<premierecolonne; ++k)
{
mult[i][j] += premierMatrice[i][k] *
secondMatrice[k][j];
}
}
}
}

void affiche(int mult[][10], int premierecolonne, int


secondecolonne)

MARTINIEN||C++_APLLICATION 13
{
int i, j;

cout << "Sortie de la Matrice:" << endl;


for(i = 0; i < premierecolonne; ++i)
{
for(j = 0; j < secondecolonne; ++j)
{
cout << mult[i][j] << " ";
if(j == secondecolonne - 1)
cout << endl << endl;
}
}
}
3- # include<iostream>
using namespace std;
int main()
{ int n;
do
{ cout<<"\n Saisir le nombre d'elements:";
cin>>n;
} while(n<=0);
int T[n];
for(int i=0;i<n;i++)
{ cout<<"T["<<i+1<<"]=";
cin>>T[i];
}
int x,k(0);
cout<<"Donner une valeur:";
cin>>x;
for(int i=0;i<n;i++)
{ if(T[i]==x)
k++;
}
if(k==0)
cout<<"non la valeur est retrouve."<<endl;
else
cout<<"oui la valeur est retrouve"<<k<<"fois."<<endl;
return 0;
}
Exercice 4 :

MARTINIEN||C++_APLLICATION 14
Soit T un tableau de réels. Ecrivez les fonctions qui permettent de:
*Trouver la valeur maximale des éléments du tableau T
*Trouver la valeur minimale des éléments du tableau T
*Calculer la somme des éléments du tableau T
*Calculer la moyenne des éléments du tableau T
Ecrivez un programme qui :
Effectue la lecture d’un entier N depuis l'entrée standard
Crée un tableau de réels T composés de N composé de N éléments saisis
au clavier
Affiche à l'écran : le maximum, le minimum, la somme et la moyenne.
Solution
#include<iostream>
using namespace std;

float Maximun(float T[],int n)


{float max;
max=T[0];
for(int i=1;i<n;i++)
{
if(max<T[i])
max=T[i];
}

return max;
}

float Minimun(float *T,int n)


{float min;

MARTINIEN||C++_APLLICATION 15
min=T[0];
for(int i=1;i<n;i++)
{
if(min>T[i])
min=T[i];
}

return min;
}

float Somme(float *T,int n)


{ float s(0);
for(int i=0;i<n;i++)
s+=T[i];//s=s+T[i]
return s;
}

float Moyenne(float *T,int n)


{ float moy;
if(n!=0)
moy=Somme(T,n)/n;
return moy;
}

void Remplissage(float *T,int n)


{
for(int i=0;i<n;i++)
{

MARTINIEN||C++_APLLICATION 16
cout<<"Saisisez la valeur num\202ro"<<i+1<<":";
cin>>T[i];
}
}

void Affichage(float *T,int n)


{
for(int i=0;i<n;i++)
{
cout<<T[i]<<"|";
}
cout<<"\n"<<endl;
}
int main()
{ int N;
do{
cout<<"Donner la taille du tableau?";
cin>>N;
} while(N<=0);
float T[N];
Remplissage(T,N);
cout<<"\n Affichage du tableau:"<<endl;
Affichage(T,N);
cout<<" Le maximun est :"<<Maximun(T,N)<<endl;
cout<<" Le mimimun est:"<<Minimun(T,N)<<endl;
cout<<" La somme est :"<<Somme(T,N)<<endl;
cout<<" La moyenne est:"<<Moyenne(T,N)<<endl;
return 0;

MARTINIEN||C++_APLLICATION 17
}

Exercice 5 :
1- Ecrire un programme qui utilise une fonction Permuter pour permuter
deux variables
2- Soit T un tableau de réels. Ecrivez une fonction Trie qui trie par ordre
croissant un tableau
3- Ecrire un programme en C++ qui affiche le jour de la semaine (lundi,
mardi,..ou dimanche) lorsqu'on donne la date de naissance jj, mm et aaa
sont trois entiers positifs
NB : On suppose que la date est correcte et le calendrier est un calendrier
grégorien.
4- Ecrire un programme en C++ qui effectue l'addition et le produit de deux
matrices
Solution
1- # include <iostream>
using namespace std;

void Permuter1(float x, float y)


{ float c=x;
cout<<"x=="<<x<<"et y=="<<y<<endl;
x=y;
y=c;
cout<<"x=="<<x<<"et y=="<<y<<endl;
}

void Permuter2(float *x, float *y)


{ float c=*x;
cout<<"x=="<<*x<<"et y=="<<*y<<endl;
*x=*y;
*y=c;

MARTINIEN||C++_APLLICATION 18
cout<<"x=="<<*x<<"et y=="<<*y<<endl;
}

void Permuter3(float &x, float &y)


{ float c=x;
cout<<"x=="<<x<<"et y=="<<y<<endl;
x=y;
y=c;
cout<<"x=="<<x<<"et y=="<<y<<endl;
}

int main()
{ float x(12),y(21);
float *p=&x,*q=&y;
cout<<"Passage par valeur:"<<endl;
Permuter1(x,y);
cout<<"x=="<<x<<"et y=="<<y<<endl;

cout<<"*******"<<endl;
cout<<"Passage par adresse:"<<endl;
Permuter2(&x,&y);
cout<<"x=="<<x<<"et y=="<<y<<endl;

cout<<"*******"<<endl;
cout<<"Passage par reference:"<<endl;
Permuter3(x,y);
cout<<"x=="<<x<<"et y=="<<y<<endl;

MARTINIEN||C++_APLLICATION 19
return 0;
}
2- #include<iostream>
using namespace std;

float Maximun(float T[],int n)


{float max;
max=T[0];
for(int i=1;i<n;i++)
{
if(max<T[i])
max=T[i];
}

return max;
}

float Minimun(float *T,int n)


{float min;
min=T[0];
for(int i=1;i<n;i++)
{
if(min>T[i])
min=T[i];
}

MARTINIEN||C++_APLLICATION 20
return min;
}

void Triercroiss(float *T,int n)


{
for(int i=0;i<n;i++)
{for(int j=i;j<n;j++)
{ if(T[i]>T[j])
{ float k=T[i];
T[i]=T[j];
T[j]=k;
}
}
}
}

void Trierdecroiss(float *T,int n)


{
for(int i=0;i<n;i++)
{for(int j=i;j<n;j++)
{ if(T[i]<T[j])
{ float k=T[i];
T[i]=T[j];
T[j]=k;
}
}
}
}

MARTINIEN||C++_APLLICATION 21
float Somme(float *T,int n)
{ float s(0);
for(int i=0;i<n;i++)
s+=T[i];//s=s+T[i]
return s;
}

float Moyenne(float *T,int n)


{ float moy;
if(n!=0)
moy=Somme(T,n)/n;
return moy;
}

void Remplissage(float *T,int n)


{
for(int i=0;i<n;i++)
{
cout<<"Saisisez la valeur num\202ro"<<i+1<<":";
cin>>T[i];
}
}

void Affichage(float *T,int n)


{
for(int i=0;i<n;i++)
{

MARTINIEN||C++_APLLICATION 22
cout<<T[i]<<"|";
}
cout<<"\n"<<endl;
}
int main()
{ int N;
do{
cout<<"Donner la taille du tableau:";
cin>>N;
} while(N<=0);
float Tab[N];
Remplissage(Tab,N);
cout<<"\n Affichage du tableau:"<<endl;
Affichage(Tab,N);
cout<<" Le maximun est :"<<Maximun(Tab,N)<<endl;
cout<<" Le mimimun est:"<<Minimun(Tab,N)<<endl;
cout<<" La somme est :"<<Somme(Tab,N)<<endl;
cout<<" La moyenne est:"<<Moyenne(Tab,N)<<endl;
Triercroiss(Tab,N);
cout<<"\n Affichage du tableau croissant :"<<endl;
Affichage(Tab,N);

Trierdecroiss(Tab,N);
cout<<"\n Affichage du tableau decroissant :"<<endl;
Affichage(Tab,N);
return 0;
}
3- # include <string>

MARTINIEN||C++_APLLICATION 23
using namespace std;

/**
Type Date
*/
struct DateJMA
{
/// numéro de jour
int jr;
/// numéro de mois
int mm;
/// millésime de l’année
int an;
};

bool bissextile(int an)


{
return (an % 4 == 0 && !(an % 100 == 0)) || (an % 400 == 0);
}

int njours(int mm, int an)


{
int rs = 0;
switch (mm)
{
case 4: case 6: case 9: case 11:
rs = 30;
break;

MARTINIEN||C++_APLLICATION 24
case 2:
rs = (bissextile(an) ? 29 : 28);
break;
default:
rs = 31;
}
return rs;
}

bool datumDT(const DateJMA& dt)


{
return (dt.an >= 0) && (1 <= dt.mm && dt.mm <= 12) && (1 <= dt.jr
&& dt.jr <=njours(dt.mm,dt.an));
}
void saisirDT(DateJMA& dt)
{
dt.jr = 0;
dt.mm = 0;
dt.an = 0;
char c;
while (!datumDT(dt))
{
cout<<"jr/mm/an? ";
cin>>dt.jr>>c>>dt.mm>>c>>dt.an;
}
}

/**

MARTINIEN||C++_APLLICATION 25
Début calendrier grégorien
*/
const int DEBUTGREGCALENDRIER = 1582;
/**
Prédicat de DateJMA grégorienne
@param[in] dt - une DateJMA
@return Vrai si dt est grégorienne
*/
bool gregorienneDT(const DateJMA& dt)
{
bool nonb1 = (dt.an < DEBUTGREGCALENDRIER);
bool nonb2 = (dt.an == DEBUTGREGCALENDRIER && (dt.mm < 10 || (dt.mm
== 10 && dt.jr <5)));
return !(nonb1 || nonb2);
}

/**
Jour de la semaine par la Formule de Zeller
@param[in] dt - une DateJMA
@return le jour de semaine de dt
*/
int jsemaineDT(const DateJMA& dt)
{
int m, a;
if (dt.mm >= 3)
{
m = dt.mm - 2;
a = dt.an;

MARTINIEN||C++_APLLICATION 26
}
else
{
m = dt.mm + 10;
a = dt.an - 1;
}
int s = a / 100;
int n = a % 100;
int f = dt.jr + n + 5 * s + n / 4 + s / 4 + (13 * m - 1) / 5;
if (!gregorienneDT(dt))
{
f += 3;
}
return (f % 7);
}

/**
Noms des jours
*/
const string NOMSJOURS[] =
{"Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"};

/**
Nom d’un jour de semaine en toutes lettres
@param[in] jsem - numéro jour de semaine dans (0=dimanche,...,6=samedi)
@return le nom de jsem en toutes lettres
*/
string nomJSemaine(int jsem)

MARTINIEN||C++_APLLICATION 27
{
return NOMSJOURS[jsem];
}

int main()
{
DateJMA dt {};
saisirDT(dt);
int jsem = jsemaineDT(dt);
cout<<"==> "<<nomJSemaine(jsem)<<" ("<<jsem<<")"<<endl;

return 0;

}
4- # include <iostream>
using namespace std;

void entrerDonne(int premierMatrice[][10], int secondMatrice[][10], int


premiereligne, int premierecolonne,int secondeligne, int secondecolonne);
void multiplieMatrice(int premierMatrice[][10], int secondMatrice[][10],int
mult[][10], int premiereligne, int premierecolonne,int secondeligne, int
secondecolonne);
void additionMatrice(int premierMatrice[][10], int secondMatrice[][10],int
som[][10], int premiereligne, int premierecolonne,int secondeligne, int
secondecolonne);
void affiche(int mult[][10], int premiereligne, int secondecolonne);
void affiche1(int som[][10], int premiereligne, int secondecolonne);

int main()
{
int premierMatrice[10][10], secondMatrice[10][10],
mult[10][10],som[10][10], premiereligne,
premierecolonne,secondeligne,secondecolonne, i, j, k;

cout << "Enter le nombre de lignes et colonnes de la premiere matrice: ";

MARTINIEN||C++_APLLICATION 28
cin >> premiereligne>>premierecolonne;

cout << "Enter le nombre de lignes et colonnes de la seconde matrice : ";


cin >>secondeligne>>secondecolonne;

// Si la premiere colonne de la matrice n'est pas égal au nombre de colonne


de la deuxième matrice ,demandez à l'utilisateur d'entrer à nouveau la taille de la
matrice .
while (premierecolonne != secondeligne)
{
cout << "Erreur! Colonne de la premiere matrice n'est pas égal au
nombre de ligne de la second matrice." << endl;
cout << "Enter le nombre de lignes et colonnes de la premiere
matrice: ";
cin >> premiereligne>>premierecolonne;
cout << "Enter le nombre de lignes et colonnes de la seconde
matrice: ";
cin >>secondeligne>>secondecolonne;
}

// Function to take matrices data


entrerDonne(premierMatrice, secondMatrice, premiereligne,
premierecolonne, secondeligne, secondecolonne);

// Function to multiply two matrices.


multiplieMatrice( premierMatrice, secondMatrice, mult, premiereligne,
premierecolonne, secondeligne, secondecolonne);
// Function to display resultant matrix after multiplication.
affiche(mult,premiereligne,secondecolonne);

additionMatrice( premierMatrice, secondMatrice, som, premiereligne,


premierecolonne, secondeligne, secondecolonne);
affiche1(som,premiereligne,secondecolonne);

return 0;
}

void entrerDonne(int premierMatrice[][10], int secondMatrice[][10], int


premiereligne, int premierecolonne,int secondeligne, int secondecolonne)
{
int i, j;
cout << endl << "Enter les elements de la matrice 1:" << endl;

MARTINIEN||C++_APLLICATION 29
for(i = 0; i < premiereligne; ++i)
{
for(j = 0; j < premierecolonne; ++j)
{
cout << "Entrer les elements a"<< i + 1 << j + 1 << ": ";
cin >> premierMatrice[i][j];
}
}

cout << endl << "Enter les elements de la matrice 2:" << endl;
for(i = 0; i < secondeligne; ++i)
{
for(j = 0; j < secondecolonne; ++j)
{
cout << "Entrer les elements b" << i + 1 << j + 1 << ": ";
cin >> secondMatrice[i][j];
}
}
}

void multiplieMatrice(int premierMatrice[][10], int secondMatrice[][10],int


mult[][10], int premiereligne, int premierecolonne,int secondeligne, int
secondecolonne)
{
int i, j, k;

// Initializing elements of matrix mult to 0.


for(i = 0; i < premiereligne; ++i)
{
for(j = 0; j < secondecolonne; ++j)
{
mult[i][j] = 0;
}
}

// Multiplying matrix firstMatrix and secondMatrix and storing in array


mult.
for(i = 0; i < premierecolonne; ++i)
{
for(j = 0; j < secondecolonne; ++j)
{
for(k=0; k<premierecolonne; ++k)

MARTINIEN||C++_APLLICATION 30
{
mult[i][j] += premierMatrice[i][k] *
secondMatrice[k][j];
}
}
}
}

void additionMatrice(int premierMatrice[][10], int secondMatrice[][10],int


som[][10], int premiereligne, int premierecolonne,int secondeligne, int
secondecolonne)
{
int i, j, k;

// Initializing elements of matrix mult to 0.


for(i = 0; i < premiereligne; ++i)
{
for(j = 0; j < secondecolonne; ++j)
{
som[i][j] =premierMatrice[i][j]+secondMatrice[i][j];
}
}

void affiche(int mult[][10], int premierecolonne, int secondecolonne)


{
int i, j;

cout << "Sortie de la Matrice: Multiplication "<< endl;


for(i = 0; i < premierecolonne; ++i)
{
for(j = 0; j < secondecolonne; ++j)
{
cout << mult[i][j] << " ";
if(j == secondecolonne - 1)
cout << endl << endl;
}
}
}

void affiche1(int som[][10], int premierecolonne, int secondecolonne)

MARTINIEN||C++_APLLICATION 31
{
int i, j;

cout << "Sortie de la Matrice: Addition" << endl;


for(i = 0; i < premierecolonne; ++i)
{
for(j = 0; j < secondecolonne; ++j)
{
cout << som[i][j] << " ";
if(j == secondecolonne - 1)
cout << endl << endl;
}
}
}
Exercice 6 :
Ecrire un programme qui permet d’échanger le contenu de deux variables en
utilisant une fonction pour ce faire. On utilisera chacun des types de
transmissions des paramètres afin d’en observer le mécanisme.
Solution
# include <iostream>
using namespace std;
void Permuter2(float*,float* );
void Permuter3(float&,float& );
float x,y;
int main() ;
cout<<"Veuillez entrer deux nombres x et y : ";
cin>>x>>y;
cout<<"\n\nAvant permutation x = "<<x<<"et y = "<<y;
cout<<"\n\nPASSAGE PAR ADRESSE"<<endl;
Permuter2(&x,&y);
cout<<"\n\nApres permutation x= "<<x<<" et y= "<<y<<endl;
cout<<"Veuillez entrer deux nombres x et y : ";
cin>>x>>y ;

MARTINIEN||C++_APLLICATION 32
cout<<"\n\nAvant permutation x = "<<x<<" et y = "<<y;
cout<<"\n\nPASSAGE PAR REFERENCE"<<endl;;
Permuter3(x,y);
cout<<"\n\nApres permutation x= "<<x<<" et y= "<<y<<endl;
return 0;
}

void Permuter2(float *t, float *k)


{
float Temp=*k;
*k=*t;
*t=Temp;
}

void Permuter3(float &t, float &k)


{
float Temp=k;
k=t;
t=Temp;
}

Exercice 7 :
Ecrire un programme C++ en utilisant la notion de structure qui propose le menu
suivant :
1- Enregistrements des étudiants
2- Liste des étudiants
Chaque étudiant est caractérisé par un matricule, un nom, un âge et une
filière.
Solution

MARTINIEN||C++_APLLICATION 33
#include<iostream>
#include<Windows.h>
#include<string>
# define NBRETU 100
using namespace std;
void Enregistrer();
void Lister();
struct Etudiant
{
string matricule;
string nom;
string filiere;
short age;
};
struct Etudiant etu[NBRETU];
int i=0; char Reponse[5];
int ch;
int main ()
{
do{
cout <<"\n\nCHOISIR L'OPERATION A EFFECTUER";
cout<<"\n\n\t 1-ENREGISTRER ETUDIANTS";
cout <<"\n\n\t 2- LISTER LES ETUDIANTS";
cout <<"\n\n\t VOTRE CHOIX SVP : ";
cin>>ch;
switch(ch)
{
case 1: system("Cls");

MARTINIEN||C++_APLLICATION 34
cout<<"\n\n ENREGISTREMENT\n\n";
Enregistrer(); break;
case 2: system("Cls");
cout<<"\n\n LISTE\n\n";
Lister(); break;
}
cout<<"\n\nVEUILEZ VOUS CONTINUER .......(Oui/Non) ? : ";
cin>>Reponse;
} while(stricmp(Reponse,"Oui")==0);

return 0;
}

void Enregistrer(){
do{
cout<<"\n\n MATRICULE : ";
cin>>etu[i].matricule;
cout<<"\n\n NOM : ";
cin>>etu[i].nom;
cout<<"\n\n FILIERE : ";
cin>>etu[i].filiere;
cout<<"\n\n AGE : ";
cin>>etu[i].age;
i++;
cout<<"AUTRE ETUDIANT (Oui/Non) ? : ";
cin>>Reponse;
} while(stricmp(Reponse,"Oui")==0);
}

MARTINIEN||C++_APLLICATION 35
void Lister(){
for(int j=0;j<i;j++){

cout<<"\t"<<etu[j].matricule<<"\t"<<etu[j].nom<<"\t"<<etu[j].filiere<<"\t"<<e
tu[j].age;
}
}
Exercice 8 :
On voudrait gérer les étudiants d’une institution à l’aide d’une classe Etudiant
définie par :

Les attributs suivants :

- nom : nom d’un étudiant


- prénom : prénom d’un étudiant

- tabnotes : tableau contenant les notes d’un étudiant, sachant qu’un étudiant a au
total 10 notes.
Les méthodes suivantes :

- void saisie (), permettant la saisie d’un étudiant

- void affichage (), permettant l’affichage d’un étudiant


- float moyenne (), retourne comme résultat la moyenne des notes d’un étudiant.

- int admis (), retourne comme résultat la valeur 1, si un étudiant est admis et la
valeur 0, sinon. Un étudiant est considéré comme étant admis lorsque la moyenne
de ses notes est supérieure ou égale à 10.

- int exae_quo (Etudiant E), retourne comme résultat la valeur 1, si deux étudiants
ont la même moyenne et la valeur 0, sinon.

a) Ecrire la classe Etudiant dans le langage C++.

b) Définir également les différentes méthodes de cette classe.


Solution

MARTINIEN||C++_APLLICATION 36
#include<iostream>

#include <cstdlib>

using namespace std;

class Etudiant

{ private:

string Nom,Prenom;

float Notes[10] ;

public :

void saisie () ;

void afficher () ;

float moyenne() ;

int admis() ;

int exae_quo (Etudiant E) ;

};

MARTINIEN||C++_APLLICATION 37
void Etudiant ::saisie ()

{ int i ;

cout << "\n\nDonner le nom :" ;

cin >> Nom ;

cout << "\n\nDonner le p\202nom :" ;

cin >> Prenom ;

cout << "\n\nSaisie des notes\n\n" ;

for (i = 0 ; i < 10 ; i++)

cout << "\n\nDonner la note N°" << i<< " : " ;

cin >> Notes[i] ;

MARTINIEN||C++_APLLICATION 38
void Etudiant ::afficher ()

{ int i ;

cout << "\nLe nom :"<<Nom<< endl ;

cout << "\nLe pr\202nom :" <<Prenom<< endl ;

for (i = 0 ; i < 10 ; i++)

cout << "\nLa note N°" << i << "est " << Notes[i]<< endl ;

float Etudiant ::moyenne()

{ int i ;

float som = 0;

for (i = 0 ; i < 10 ; i++)

som=+Notes[i] ;

return (som/10);

MARTINIEN||C++_APLLICATION 39
}

int Etudiant ::admis()

{ if (moyenne() >= 10) return (1); else return (0);}

int Etudiant ::exae_quo(Etudiant E)

{ if (moyenne() == E.moyenne()) return (1); else return (0);}

int main()

Etudiant etud;

char choix = '0';

unsigned int value;

while(true)

do

cout << " \n\nETUDIANT - Menu" << endl;

cout << "\n\n1 - Enregistrer etudiant" << endl;

cout << "`\n\n2 - Afficher etudiant" << endl;

cout << "\n\n3 - Moyenne des étudiants" << endl;

MARTINIEN||C++_APLLICATION 40
cout << "\n\n4 - Rang des etudiants" << endl;

cout << "\n\n5 - Quitter" << endl;

cin >> choix;

while(choix < '1' || choix > '5');

switch(choix)

case '1':

cout << "Enregistrement : ";

cin >> value;

etud.saisie();

break;

case '2':

cout << "Affichage des étudiants : ";

etud.afficher();

break;

case '3':

cout << "Moyenne des étudiants : " << etud.moyenne() << endl;

break;

case '4':

etud.exae_quo(etud);

break;

case '5':

exit(0);

MARTINIEN||C++_APLLICATION 41
break;

default:

cerr << "Erreur ! Choix invalide." << endl;

exit(1);

return 0;

Exercice 9 :

Écrire un programme utilisant une classe rectangle dont le constructeur prend


deux paramètres, largeur et hauteur et qui offre les fonctions suivantes :
 Calcul du périmètre,
 Calcul de la surface,
 Affichage,
 Ainsi que les accesseurs et mutateurs triviaux (lecture et modification de la
largeur et de la hauteur).
Solution
#include<iostream>
#include <cstdlib>

using namespace std;

class Rectangle
{
public:
Rectangle(unsigned int initLargeur, unsigned int initHauteur);
~Rectangle();
unsigned int getLargeur() const { return largeur; };

MARTINIEN||C++_APLLICATION 42
unsigned int getHauteur() const { return hauteur; };
unsigned int perimetre() const { return 2*(largeur+hauteur); };
unsigned int surface() const { return largeur * hauteur; };
void setLargeur(unsigned int newLargeur) { largeur = newLargeur; };
void setHauteur(unsigned int newHauteur) { hauteur = newHauteur; };
void afficher();

private:
unsigned int largeur;
unsigned int hauteur;
};

Rectangle::Rectangle(unsigned int initLargeur, unsigned int initHauteur)


{
largeur = initLargeur;
hauteur = initHauteur;
}

Rectangle::~Rectangle()
{
}

void Rectangle::afficher()
{
for(unsigned int i=1; i <= hauteur; i++)
{
for(unsigned int j=1; j <= largeur; j++){
if(i==1||i==hauteur||j==1||j==largeur)

MARTINIEN||C++_APLLICATION 43
cout << "*";
else
cout<<" ";
}
cout << endl;
}
}

int main()
{
Rectangle monRectangle(0,0);
char choix = '0';
unsigned int value;

while(true)
{
do
{
cout << " Rectangle - Menu" << endl;
cout << "1 - Modifier largeur du rectangle" << endl;
cout << "2 - Modifier hauteur du rectangle" << endl;
cout << "3 - Calculer les propriétés du rectangle" << endl;
cout << "4 - Afficher le rectangle" << endl;
cout << "5 - Quitter" << endl;

cin >> choix;


}
while(choix < '1' || choix > '5');

MARTINIEN||C++_APLLICATION 44
switch(choix)
{
case '1':
cout << "Nouvelle largeur : ";
cin >> value;
monRectangle.setLargeur(value);
break;
case '2':
cout << "Nouvelle hauteur : ";
cin >> value;
monRectangle.setHauteur(value);
break;
case '3':
cout << "Périmètre : " << monRectangle.perimetre() << endl;
cout << "Surface : " << monRectangle.surface() << endl;
break;
case '4':
monRectangle.afficher();
break;
case '5':
exit(0);
break;
default:
cout << "Erreur ! Choix invalide." << endl;
exit(1);
}
}

MARTINIEN||C++_APLLICATION 45
return 0;
}
Exercice 10 :
On voudrait maintenant représenter, à l’aide d’une nouvelle classe
Etudiant_en_Maitrise, certains étudiants particuliers dans cette institution qui sont
les étudiants en dernière année d’études. Ces étudiants possèdent en effet un
attribut supplémentaire : note_memoire, qui représente la note de leur mémoire
de fin d’études.

Les méthodes à associer à cette classe sont les suivantes :

- void saisie (), permettant la saisie d’un étudiant en maîtrise

- void affichage (), permettant l’affichage d’un étudiant en maîtrise

- float moyenne (), retourne comme résultat la moyenne des notes d’un étudiant
en maîtrise

- int admis (), retourne comme résultat la valeur 1, si un étudiant est admis et la
valeur 0, sinon. Un étudiant en maîtrise est considéré comme étant admis lorsque,
d’une part, la moyenne de ses notes est supérieure ou égale à 10 et d’autre part la
note obtenue pour son mémoire de fin d’études est supérieure ou égale à 10.

- int exae_quo (Etudiant_en_Maitrise E), retourne comme résultat la valeur 1, si


deux étudiants ont d’une part la même moyenne et d’autre part, la même note de
mémoire et retourne la valeur 0, sinon.

a) Quelles sont les méthodes qui sont à redéfinir dans la classe


Etudiant_en_Maitrise ?

b) Ecrire la classe Etudiant_en_Maitrise dans le langage C++.

Solution

#include<iostream>
#include <cstdlib>
using namespace std;

class Etudiant

MARTINIEN||C++_APLLICATION 46
{ private:

char nom[50], prenom[50];

float tabnotes[10] ;

public :

void saisie () ;

void affichage () ;

float moyenne() ;

int admis() ;

int exae_quo (Etudiant E) ;

};

void Etudiant ::saisie ()

{ int i ;

cout << "Donner le nom :" ;

cin >> nom ;


MARTINIEN||C++_APLLICATION 47
cout << "Donner le pr\202nom :" ;

cin >> prenom ;

cout << "Saisie des notes \n" ;

for (i = 0 ; i < 10 ; i++)

cout << "Donner la note N°" << i<< " : " ;

cin >> tabnotes[i] ;

void Etudiant ::affichage ()

{ int i ;

cout << "Le nom :"<<nom<< endl ;

cout << "Le pr\202nom :" <<prenom<< endl ;

MARTINIEN||C++_APLLICATION 48
for (i = 0 ; i < 10 ; i++)

cout << "La note N°" << i << "est " << tabnotes[i]<< endl ;

float Etudiant ::moyenne()

{ int i ;

float som = 0;

for (i = 0 ; i < 10 ; i++)

som += tabnotes[i] ;

return (som/10);

int Etudiant ::admis()

{ if (moyenne() >= 10) return (1); else return (0);}

int Etudiant ::exae_quo(Etudiant E)

{ if (moyenne() == E.moyenne()) return (1); else return (0);}


MARTINIEN||C++_APLLICATION 49
class Etudiant_en_Maitrise : public Etudiant

{ private:

float note_memoire ;

public :

void saisie () ;

void affichage () ;

int admis() ;

int exae_quo (Etudiant_en_Maitrise E) ;

};

void Etudiant_en_Maitrise ::saisie ()

{ Etudiant ::saisie () ;

cout << "Donner la note du mémoire :" ;

cin >> note_memoire ;


MARTINIEN||C++_APLLICATION 50
}

void Etudiant_en_Maitrise ::affichage ()

{ Etudiant :: affichage () ;

cout << "La note du mémoire :" << note_memoire<< endl ;

int Etudiant_en_Maitrise ::admis()

{ if ((moyenne() >= 10) && (note_memoire >=10))return (1); else return (0);}

int Etudiant_en_Maitrise ::exae_quo(Etudiant_en_Maitrise E)

{ if ((moyenne() == E.moyenne()) && (note_memoire == E.note_memoire))


return (1); else return (0);}

int main()
{
Etudiant_en_Maitrise etud;
char choix = '0';
unsigned int value;

while(true)

MARTINIEN||C++_APLLICATION 51
{
do
{
cout << " \n\nETUDIANT - Menu" << endl;
cout << "\n\n1 - Enregistrer etudiant" << endl;
cout << "`\n\n2 - Afficher etudiant" << endl;
cout << "\n\n3 - Moyenne des étudiants" << endl;
cout << "\n\n4 - Rang des etudiants" << endl;
cout << "\n\n5 - Quitter" << endl;
cin >> choix;
}
while(choix < '1' || choix > '5');

switch(choix)
{
case '1':
cout << "Enregistrement : ";
cin >> value;
etud.saisie();
break;
case '2':
cout << "Affichage des étudiants : ";
etud.affichage();
break;
case '3':
cout << "Moyenne des étudiants : " << etud.moyenne() << endl;
break;
MARTINIEN||C++_APLLICATION 52
case '4':
etud.exae_quo(etud);
break;
case '5':
exit(0);
break;
default:
cerr << "Erreur ! Choix invalide." << endl;
exit(1);
}
}
return 0;
}
Exercice 11 :
On souhaite créer une application permettant de gérer les contacts téléphoniques.
Pour chacun des contacts les infos recueillies sont les suivants : NOM,
PRENOM, N°TELEPHONIQUE, DATE DE NAISSANCE

TAF :

-Créer deux fonctions permettant respectivement d’insérer un contact dans la liste


ou de consulter les infos relatives à un contact.

-Le programme principale devra afficher le menu suivant :


1- ENREGISTRER NOUVEAU CONTACT
2- AFFICHER LISTE DES CONTACTS
3- RECHERCHER UN CONTACT
4- MISE A JOUR CONTACTS
0- QUITTER

MARTINIEN||C++_APLLICATION 53
Créer par la suite deux autres fonctions au moins permettant de gérer la gestion
des numéro 3 et 4 du menu principal.

Solution
# include<iostream>
# include<fstream>

#include<windows.h>

#include<iomanip>

using namespace std;


void insererCont();

void afficherCont();

struct Date

{
short jour;

char mois[50] ;

int annee;

};
struct Date dateNaiss;

struct Contact

char prenom[50];

char nom[50];

char tel[15];

MARTINIEN||C++_APLLICATION 54
struct Date dateNaiss;

};

struct Contact contact;


int ch;

char reponse[5];

void Ligne();

int main(){
cout<<endl;
Ligne();

cout<<"\n\n\t\t\tPROGRAMME DE GESTION DES


NUMERO TELEPHONIQUE\n\n";

Ligne();
do

cout <<"\n\nCHOISIR L'OPERATION A


EFFECTUER";
cout<<"\n\n\t1-ENREGISTRER NOUVEAU
CONTACT";
cout <<"\n\n\t2-AFFICHER LISTE DES
CONTACTS ";

cout <<"\n\n\t3-RECHERCHER D'UN


CONTACT";

cout <<"\n\n\t4-MISE A JOUR CONTACTS";

cout <<"\n\n\t0-QUITTER";

cout <<"\n\nVOTRE CHOIX SVP : ";

MARTINIEN||C++_APLLICATION 55
cin>>ch;

switch(ch){

case 1 : system("Cls");
insererCont(); break;

case 2 : system("Cls");

afficherCont(); break;

}
cout<<"\n\nVEUILEZ VOUS
CONTINUER .......(Oui/Non) ? : ";

cin>>reponse;

} while (stricmp(reponse,"Oui")==0);

return 0;

void Ligne ()

{
for(int i=1;i<55;i++){

cout<<" * ";

void insererCont(){

ofstream wrContact
("D:/mon_C++/GE3/Contact",ios::out|ios::app);

if(!wrContact)

MARTINIEN||C++_APLLICATION 56
{

cerr<<" ! Erreur de Creation du fichier!";

}
else
{

do{

cin.sync();

cin.clear();
system("Cls");
cout<<"\n\n\t\t* * * ENREGISTREMENT NOUVEAU
CONTACT * * *\n\n ";

cout<<"\t NOM : "; cin.getline(contact.nom,50);

cout<<"\n\n\t PRENOM : "; cin.getline(contact.prenom,50);


cout<<"\n\n\t TELEPHONE: "; cin.getline(contact.tel,15);

cout<<"\n\n\t DATE DE NAISSANCE\n\n";

cout<<"\n\n\t\tJOUR : ";

cin>>contact.dateNaiss.jour;
cout<<"\n\n\t\tMOIS : ";

cin>>contact.dateNaiss.mois;

cout<<"\n\n\t\tANNEE : ";

cin>>contact.dateNaiss.annee;

wrContact.write((char*)&contact,sizeof(contact));

cout<<"AUTRE CONTACT A ENREGISTRER (Oui/Non) ?


: ";

cin>>reponse;

MARTINIEN||C++_APLLICATION 57
} while(stricmp(reponse,"Oui")==0);

wrContact.close();

}
}
void afficherCont(){

system("cls");

ifstream wrContact ("D:/mon_C++/GE3/Contact",ios::in);

cout<<"\n\n\t\t* * * LISTE DE CONTACTS * * *\n\n ";

cout<<setw(12)<<"NOM"<<setw(22)<<"PRENOM"<<setw(15)<<"TEL
EPHONE"<<setw(25)<<"DATE DE NAISSANCE";

while(wrContact.read((char*)&contact,sizeof(contact)))

cout<<"\n\n"<<setw(12)<<contact.nom<<setw(22)<<contact.prenom<<se
tw(15)<<contact.tel<<setw(6)<<contact.dateNaiss.jour<<setw(12)<<contact.dat
eNaiss.mois<<setw(10)<<contact.dateNaiss.annee;
}
wrContact.close();

Exercice 12 :

Ecrire un programme qui permet de calculer le périmètre et la surface de deux


rectangles dont les longueurs et les largeurs respectives seront fournis par
l’utilisateur ou utilisera la notion de classe et intégrera déclaration, définition et
utilisation dans un même fichier.

Solution

MARTINIEN||C++_APLLICATION 58
#include<iostream>

using namespace std ;

//Creation de la Rectangle
class Rectangle
{

private:

int longueur;

int largeur;
public:
unsigned int CalculerPerimetre();

unsigned int CalculerSurface();

void prendreDimension(int ,int );

};

void Rectangle::prendreDimension(int lng,int larg)

this->longueur=lng;

this->largeur=larg;

unsigned int Rectangle::CalculerPerimetre()

return 2*(this->longueur+this->largeur);

MARTINIEN||C++_APLLICATION 59
unsigned int Rectangle::CalculerSurface()

return (this->longueur*this->largeur);
}
int main()

Rectangle rect1,rect2;

int L,l;
cout<<"\n\n Donner la longueur et la largeur du rectangle 1 :
";

cin>>L>>l;

rect1.prendreDimension(L,l) ;

cout<<"\n\n Donner la longueur et la largeur du rectangle 2 :


";

cin>>L,l;

rect2.prendreDimension(L,l) ;
cout<<"\n\n RECTANGLE 1 \n\n\t PERIMETRE 1 : ";

cout<<rect1.CalculerPerimetre();

cout<<"\n\n\t SURFACE 1 : ";

cout<<rect1.CalculerSurface();

cout<<"\n\n RECTANGLE 2 \n\n\t PERIMETRE 1 : ";

cout<<rect2.CalculerPerimetre();

cout<<"\n\n\t SURFACE 2 : ";

MARTINIEN||C++_APLLICATION 60
cout<<rect2.CalculerSurface();

return 0;

MARTINIEN||C++_APLLICATION 61

Vous aimerez peut-être aussi