Exercice C++ GASA
Exercice C++ GASA
Exercice C++ GASA
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;
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
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];
}
}
MARTINIEN||C++_APLLICATION 5
Min=tab[i];
pMin=i;
}
}
}
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;
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;
int main()
{
int premierMatrice[10][10], secondMatrice[10][10],
mult[10][10], premiereligne,
premierecolonne,secondeligne,secondecolonne, i, j, k;
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;
}
return 0;
}
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];
}
}
}
MARTINIEN||C++_APLLICATION 13
{
int i, j;
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;
return max;
}
MARTINIEN||C++_APLLICATION 15
min=T[0];
for(int i=1;i<n;i++)
{
if(min>T[i])
min=T[i];
}
return min;
}
MARTINIEN||C++_APLLICATION 16
cout<<"Saisisez la valeur num\202ro"<<i+1<<":";
cin>>T[i];
}
}
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;
MARTINIEN||C++_APLLICATION 18
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;
return max;
}
MARTINIEN||C++_APLLICATION 20
return min;
}
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;
}
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;
};
MARTINIEN||C++_APLLICATION 24
case 2:
rs = (bissextile(an) ? 29 : 28);
break;
default:
rs = 31;
}
return rs;
}
/**
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;
int main()
{
int premierMatrice[10][10], secondMatrice[10][10],
mult[10][10],som[10][10], premiereligne,
premierecolonne,secondeligne,secondecolonne, i, j, k;
MARTINIEN||C++_APLLICATION 28
cin >> premiereligne>>premierecolonne;
return 0;
}
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];
}
}
}
MARTINIEN||C++_APLLICATION 30
{
mult[i][j] += premierMatrice[i][k] *
secondMatrice[k][j];
}
}
}
}
MARTINIEN||C++_APLLICATION 31
{
int i, j;
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;
}
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 :
- tabnotes : tableau contenant les notes d’un étudiant, sachant qu’un étudiant a au
total 10 notes.
Les méthodes suivantes :
- 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.
MARTINIEN||C++_APLLICATION 36
#include<iostream>
#include <cstdlib>
class Etudiant
{ private:
string Nom,Prenom;
float Notes[10] ;
public :
void saisie () ;
void afficher () ;
float moyenne() ;
int admis() ;
};
MARTINIEN||C++_APLLICATION 37
void Etudiant ::saisie ()
{ int i ;
MARTINIEN||C++_APLLICATION 38
void Etudiant ::afficher ()
{ int i ;
cout << "\nLa note N°" << i << "est " << Notes[i]<< endl ;
{ int i ;
float som = 0;
som=+Notes[i] ;
return (som/10);
MARTINIEN||C++_APLLICATION 39
}
int main()
Etudiant etud;
while(true)
do
MARTINIEN||C++_APLLICATION 40
cout << "\n\n4 - Rang des etudiants" << endl;
switch(choix)
case '1':
etud.saisie();
break;
case '2':
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:
exit(1);
return 0;
Exercice 9 :
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()
{
}
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;
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.
- 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.
Solution
#include<iostream>
#include <cstdlib>
using namespace std;
class Etudiant
MARTINIEN||C++_APLLICATION 46
{ private:
float tabnotes[10] ;
public :
void saisie () ;
void affichage () ;
float moyenne() ;
int admis() ;
};
{ int i ;
{ int i ;
MARTINIEN||C++_APLLICATION 48
for (i = 0 ; i < 10 ; i++)
cout << "La note N°" << i << "est " << tabnotes[i]<< endl ;
{ int i ;
float som = 0;
som += tabnotes[i] ;
return (som/10);
{ private:
float note_memoire ;
public :
void saisie () ;
void affichage () ;
int admis() ;
};
{ Etudiant ::saisie () ;
{ Etudiant :: affichage () ;
{ if ((moyenne() >= 10) && (note_memoire >=10))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 :
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>
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;
};
char reponse[5];
void Ligne();
int main(){
cout<<endl;
Ligne();
Ligne();
do
cout <<"\n\n\t0-QUITTER";
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
{
}
else
{
do{
cin.sync();
cin.clear();
system("Cls");
cout<<"\n\n\t\t* * * ENREGISTREMENT NOUVEAU
CONTACT * * *\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));
cin>>reponse;
MARTINIEN||C++_APLLICATION 57
} while(stricmp(reponse,"Oui")==0);
wrContact.close();
}
}
void afficherCont(){
system("cls");
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 :
Solution
MARTINIEN||C++_APLLICATION 58
#include<iostream>
//Creation de la Rectangle
class Rectangle
{
private:
int longueur;
int largeur;
public:
unsigned int CalculerPerimetre();
};
this->longueur=lng;
this->largeur=larg;
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) ;
cin>>L,l;
rect2.prendreDimension(L,l) ;
cout<<"\n\n RECTANGLE 1 \n\n\t PERIMETRE 1 : ";
cout<<rect1.CalculerPerimetre();
cout<<rect1.CalculerSurface();
cout<<rect2.CalculerPerimetre();
MARTINIEN||C++_APLLICATION 60
cout<<rect2.CalculerSurface();
return 0;
MARTINIEN||C++_APLLICATION 61