Académique Documents
Professionnel Documents
Culture Documents
int a,b,s;
int main()
2. Déclarations de variables
Les types de base du C++ sont les mêmes que les types du C, avec les extensions suivantes:
• Le type bool
• La notion de référence
• Le type class (fondamental, car c'est lui qui permet de définir les objets)
Ce type peut être utilisé avec des qualificatifs pour indiquer sa taille (long ou short), et le fait
qu'il soit signé (signed) ou non (unsigned).
Pour les entiers et les caractères, le qualificateur signed est appliqué par défaut.
Un booléen peut prendre les valeurs true ou false. Il est possible de convertir un booléen en
entier et vice-versa; dans ce cas, true se convertit en 1, false se convertit en 0. Dans l'autre
sens, 0 est converti en false et tout entier non nul est converti en true.
• Le type char
• Le type string
C'est une chaine de caractère qui est considéré comme un tableau de caractères
4. Les opérateurs
Opérateurs signification Opérateurs signification Opérateurs signification
5. L'écriture
6. La lecture
Lecture d'une variable cin>>nomvariable: cin>>a;
Nb: Quand on lit une variable il faut appuyer sur la touche entrée pour valider la saisie.
Syntaxe :
if (condition) instruction
Exemple :
#include <iostream>
Using namespace std;
int main()
{
int a;
cout << "Tapez la valeur de a : "; cin >> a;
if (a > 10)
cout << "a est plus grand que 10" << endl;
cout << "Le programme est fini" << endl;
return 0;
}
Le if...else
Cette structure de contrôle permet d'exécuter une instruction si une condition est vraire, ou une autre
instruction si elle est fausse.
if (condition)
instruction1 ;
else
instruction2 ;
Exemple
#include <iostream>
using namespace std;
int main()
int a;
cout << "Tapez la valeur de a : "; cin >> a;
if (a > 10)
cout << "a est plus grand que 10" << endl;
else
cout << "a est inférieur ou égal à 10" << endl;
return 0;
}
2. Le switch
L'instruction switch permet de tester plusieurs valeurs pour une expression. C'est une forme réorganisée de if
Syntaxe
switch(expression)
{
case constante1:
instruction1_1; break;
case constante2:
instruction2_1; break;
...
default:
instruction;
}
Exemple 1
#include <iostream>
using namespace std;
int main()
{
int a;
cout << "Tapez la valeur de a : "; cin >> a;
switch(a)
{
case 1 :
cout << "a vaut 1" << endl;
break;
case 2 :
cout << "a vaut 2" << endl;
break;
case 3 :
cout << "a vaut 3" << endl;
break;
default :
cout << "a ne vaut ni 1, ni 2, ni 3" << endl;
break;
}
return 0;}
Ce programme demande à l'utilisateur de taper une valeur entière et la stocke dans la variable a. On teste
ensuite la valeur de a : en fonction de cette valeur on affiche respectivement les messages "a vaut 1", "a vaut
2", "a vaut 3", ou "a ne vaut ni 1, ni 2, ni 3".
Réalisé par SEWAVI Kokou Maurice Page 4
Support de cours de programmation en C++
Example 2
#include <iostream>
using namespace std;
int main()
{ int a;
cout << "Tapez la valeur de a : "; cin >> a;
switch(a)
{
case 1 :
cout << "a vaut 1" << endl;
break;
case 2 :
case 4 :
cout << "a vaut 2 ou 4" << endl;
break;
case 3 :
case 7 :
case 8 :
cout << "a vaut 3, 7 ou 8" << endl;
break;
default :
cout << "valeur autre" << endl;
break;
}
return 0;
}
Ce programme demande à l'utilisateur de taper une valeur entière et la stocke dans la variable a. On teste
ensuite la valeur de a : en fonction de cette valeur on affiche respectivement les messages "a vaut 1", "a vaut 2
ou 4", "a vaut 3, 7 ou 8", ou "valeur autre".
3. Le for
Le for est une structure de contrôle qui permet de répéter un certain nombre de fois une partie d'un
programme.
Syntaxe
Exemples
#include <iostream>
using namespace std;
int main()
{ int i;
for(i=0 ; i<10 ; i++)
cout << i*i << endl;
return 0;
}
Réalisé par SEWAVI Kokou Maurice Page 5
Support de cours de programmation en C++
4. Le while
Syntaxe
Initialisation ;
while (condition)
{
instruction;
incrementation ;
}
Exemple de programme
#include <iostream>
using namespace std;
int main()
{
int i = 0;
while (i < 10)
{
cout << "La valeur de i est : " << i << endl;
i++;
}
cout << "La valeur finale de i est : " << i << endl;
return 0;
}
5. Le do ... while
Syntaxe
Initialisation ;,
do {
...instructions ;
Incrémentation ;
} while( condition );
Exemple
#include <iostream>
using namesapce std;
int main()
{ int i = 0;
do
{ cout << "La valeur de i vaut : " << i << endl; i = i + 1;
}
while (i < 10);
cout << "La valeur finale de i est " << i << endl; return 0;}
Réalisé par SEWAVI Kokou Maurice Page 6
Support de cours de programmation en C++
TD1 Structures de contrôle
Exo 1
1. Écrire un programme qui résout l’équation ax2+bx+c=0 en envisageant tous les cas
particuliers.
2. Écrire un programme qui demande à l’utilisateur de saisir un entier X et qui affiche la valeur
absolue de X.
3. Écrire un programme qui demande à l’utilisateur de saisir 3 entiers A, B et C et qui indique si
C est compris entre A et B, bornes incluses.
4. Écrire un programme qui demande à l’utilisateur de saisir un entier A puis qui affiche
"ERREUR" si A n'est pas un nombre impair compris entre 83 et 101 bornes incluses.
Dans le cas contraire, on affiche "PAS D'ERREUR".
Exo 2
1. Écrire un programme ; qui dit si une année donnée est une année bissextile. Une année est
bissextile si elle est divisible par 4
2. Écrire un programme qui demande un numéro de mois à l’utilisateur et indique en retour son
nom et le nombre de jours dans ce mois.
Exo 3 :
Écrire un programme qui lit le nombre d'années le nombre de moi et des jours pour tout en jour.
Exemple: 9 ans 8 mois et 20 jours=3500jours
Exo 4 :
Écrire un programme qui lit un entier n et affiche entiers inférieurs ou égaux a n, leurs carrés et leurs
cubes. Il affiche à la fin la somme de ces entiers ; la somme des carrés et la somme des cubes.
n n² n3
0 0 0
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
15 55 225
1. Écrire un programme qui va afficher à l’écran les entiers compris entre 5 et 35.
2. Écrire un programme qui va afficher les multiples de 3 compris entre deux bornes données
3. Écrire un programme qui va afficher les multiples de 4 compris entre deux bornes données
4. Écrire un programme qui calcule le maximum entre quatre entier a, b, c et d.
Exo 6:
1. Écrire un programme, qui affiche les multiple d'un entier donné inférieurs à 100;
2. Écrire un programme qui affiche les diviseurs d'un entier n donnée
Exo 7:
1. Écrire un programme qui demande un nombre compris entre 10 et 20, jusqu’à ce que la
réponse convienne. En cas de réponse supérieure à 20, on fera apparaître un message : « Plus
petit ! », et inversement, « Plus grand ! » si le nombre est inférieur à 10.
2. Écrire un programme qui demande un nombre de départ, et qui calcule la somme des
entiers jusqu’à ce nombre.
3. Écrire un programme qui un réel n et calcule la somme
1 1 1 1
s=1 + + + +…+
2 3 4 n
4. Écrire un programme ; qui lit une série de réels, calcule puis affiche leur somme S ; leur
produit P et leur Moyenne M. le programme va s'arrêter lorsque l'utilisateur entre 0 (zéro)
5. Écrire un programme qui demande à l’utilisateur de saisir 2 entiers A et B qu'il affiche à
l'écran. Le programme ne s'arrêtera que lorsque les deux entiers seront tous impairs
Exo 8:
1. Saisir k réels
2. Calculer et afficher leur somme
3. Calculer et afficher leur moyenne
4. Afficher leur minimum
5. Afficher leur Maximum
I. Les fonctions
Le rôle d'une fonction en programmation est similaire à celui d'une fonction en
mathématique : elle retourne un résultat à partir des valeurs des paramètres
type nomfonction(parametres)
{
#include<iostream>
#include<cstdlib>
using namespace std;
int x,y,z;
bool b;
int factorielle(int n)
{
int f=1,i;
for(i=1;i<=n;i++)
f=f*i;
return f;
}
int main()
{
int c;
do
{
cout<<"\n1: sommecarre\n";
cout<<"2: paire\n";
cout<<"3: minimum\n";
cout<<"4: factorielle\n";
cout<<"5: puissance\n";
cout<<"6: quitter\n";
cout<<"faite votre choix:";
cin>>c;
while(c<1||c>6)
{
cout<<"faite votre choix:";
}
}
while(c!=6);
return 0;
}
Dans ces cas on ne peut pas utiliser une fonction, on utilise une procédure
Une procédure est un sous-programme semblable à une fonction mais qui ne retourne
rien
void nomprocedure(parametres)
{
corps de la procedure ;
}
L'appel d'une procédure, se fait dans le programme principal ou dans une autre procédure
par une instruction indiquant le nom de la procédure :
void nomprocedure()
{
Corps de la procédure ;
}
Les paramètres servent à échanger des données entre le programme principal (ou la
procédure appelante) et la procédure appelée
Les paramètres placés dans la déclaration d'une procédure sont appelés paramètres
formels. Ces paramètres peuvent prendre toutes les valeurs possibles mais ils sont
abstraits (n'existent pas réellement)
III La Récursivité
Un module (fonction ou procédure) peut s'appeler lui-même: on dit que c'est un module
récursif
Tout module récursif doit posséder un cas limite (cas trivial) qui arrête la récursivité
#include <iostream>
#include<cstdio>
using namespace std;
int f;
int facto(int n)
{
if( n==1)
return 1;
else
return n*facto(n-1);
}
int main()
{ int n;
cout<<"Donnez un entier:";
cin >>n;
f=facto(n);
cout<<"La factorielle de " <<n <<" = " <<f<<endl;;
system("pause");
return 0;
}
Exemple
Écrivez une fonction récursive (puis itérative) qui calcule le terme n de la suite définie par
: U(0)=2; U(1)=3 et U(n)=4U(n-1)+2U(n-2)
#include<iostream>
#include<cstdlib>
using namespace std;
int n,s;
int suite(int n)
{
if(n==0)
return 2;
else
#include<iostream>
#include<cstdlib>
using namespace std;
int n;
void binaire(int n)
{
if(n!=0)
{
binaire(n/2);
cout<<n%2;
}
}
int main()
{
cout<<"Donner un entier:";
cin>>n;
cout<<n<<" = ";binaire(n);
cout<<endl;
system("pause");
return 0;
}
Moy = (N1+N2+N3+N4+N5+N6+N7+N8+N9+N10+N11+N12)/12
C’est pourquoi l'algorithme nous permet de rassembler toutes ces variables en une
seule, au sein de laquelle chaque valeur sera désignée par un numéro.
2. Définition
3. Déclaration
Comme les variables d’un tableau doivent être de même type, il convient de
préciser ce type au moment de la déclaration du tableau. De même, on précise lors
de la déclaration du tableau le nombre de valeurs qu’il contient.
La syntaxe est :
#include<iostream>
#include<cstdlib>
using namespace std;
int i,n,a;
int main()
{
cout<<" donnez la taille du tableau:";
cin>>n;
int T[n];
for(i=0;i< n;i++)
{
cout<<"Donnez la valeur "<<i+1<<" du tableau:";
cin>> T[i]=a;
}
for(i=0;i< n;i++)
cout<<T[i]<<"\t";
cout<<endl;
system("pause");
return 0;
}
45 122 12 3 21 78 64 53 89 28 84 46
On commence par rechercher, parmi les 12 valeurs, quel est le plus petit élément, et où il se trouve.
On l’identifie en quatrième position (c’est le nombre 3), et on l’échange alors avec le premier élément
(le nombre 45). Le tableau devient ainsi :
3 122 12 45 21 78 64 53 89 28 84 46
3 12 122 45 21 78 64 53 89 28 84 46
On recommence à chercher le plus petit élément à partir du troisième (puisque les deux premiers
sont maintenant bien placés), et on le place correctement, en l’échangeant, ce qui donnera in fine :
3 12 21 45 122 78 64 53 89 28 84 46
• Boucle principale : prenons comme point de départ le premier élément, puis le second,
etc, jusqu’à l’avant dernier.
• Boucle secondaire : à partir de ce point de départ mouvant, recherchons jusqu’à la fin
du tableau quel et le plus petit élément. Une fois que nous l’avons trouvé, nous l’échangeons
avec le point de départ.
2. Tri à bulles
L’idée de départ du tri à bulles consiste à se dire qu’un tableau trié en ordre croissant, c’est un tableau
dans lequel tout élément est plus petit que celui qui le suit.
En effet, prenons chaque élément d’un tableau, et comparons-le avec l’élément qui le suit. Si l’ordre
n’est pas bon, on permute ces deux éléments. Et on recommence jusqu’à ce que l’on n’ait plus aucune
permutation à effectuer. Les éléments les plus grands « remontent » ainsi peu à peu vers les premières
places, ce qui explique la charmante dénomination de « tri à bulle ».
void tribulle(int t[])
{ int aux;
for(i=0; i<nb-1; i++)
for(j=i+1; j<nb; j++)
if (t[i]>t[j])
{ aux=t[j];
t[j]=t[i];
t[i]=aux;
}}
}
i++;
}
for(i=0;i<n;i++)
cout<<t[i]<<"\t";
cout<<endl;
system("pause");
return 0;
}
4. LA RECHERCHE DICHOTOMIQUE
On coupe le tableau en deux parties et on cherche dans une partie des partie qui sera elle aussi
divisée en deux sous parties jusqu''à la l'obtention ou pas de la valeur recherchée.
Programme complet
#include <iostream>
#include <string>
using namespace std;
bool trouver=false;
int nb,T[100],n,i;
EXERCICE 1
1. Écrire un programme qui demande à l'utilisateur de saisir n entiers stockés dans un tableau. Le
programme doit afficher le nombre d'entiers supérieurs ou égaux à 10.
2. Le programme doit rechercher si un réel V se trouve dans le tableau et afficher "V se trouve dans
le tableau" ou "V ne se trouve pas dans le tableau".
3. Le programme doit ensuite afficher l'indice du plus grand élément du tableau.
4. Le programme doit ensuite afficher soit "le tableau est croissant", soit "le tableau est
décroissant", soit "le tableau est constant", soit "le tableau est quelconque".
EXERCICE 2
Écrire un programme qui demande à l'utilisateur de saisir n entiers stockés dans un tableau.
Le programme doit permettre de:
EXERCICE 3
Écrire un programme qui demande à l'utilisateur de saisir n nom stockés dans un tableau.
Le programme doit permettre de:
1. saisir et afficher les n Noms;
2. Chercher et afficher le plus petit nom
3. Chercher et afficher le grand petit nom
4. Trier le tableau par ordre croissant et réafficher le tableau.
La notion de structure permet de manipuler sous forme d'une entité unique un objet composé
d'éléments, appelés membres ou champs, de types pouvant être différents. Elle est très
proche de la notion de classe en programmation orientée objet.
struct personne {
char nom[20];
char prenom[20];
int no_ss;
}
struct Client
{
int Age;
float Taille;
} maty;
struct
{
int Age;
float Taille;
} maman;
L'accès aux champs d'une structure se fait avec l’opérateur.. Par exemple, si l'on reprend la
structure complexe z, on désignera le champ re par z.re. Les champs ainsi désignés peuvent
être utilisés comme toute autre variable.
struct Client
{
int Age;
string nom,prenom
folat Taille;
};
4. Exemples
a) Structure employé
include<iostream>
#include<cstdlib>
using namespace std;
struct employer
{
string nom;
string prenom;
float salaire;
};
void saisie()
{
cout<<" donnez le nombre d'employers: ";
cin>>n;
for(int i=0;i<n;i++)
{
cout<<" donnez le nom "<<i<<":";
cin>>e.nom;
cout<<" donnez le prenom "<<i<<":";
cin>>e.prenom;
cout<<"donnez le salaire de "<<i<<":";
cin>>e.salaire;
T[i]=e;
Réalisé par SEWAVI Kokou Maurice Page 23
Support de cours de programmation en C++
}
}
void afficher()
{
for(int i=0;i<n;i++)
cout<<T[i].nom<<"\t"<<T[i].prenom<<"\t"<<T[i].salaire<<endl;
}
void trier()
{
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(T[i].salaire<T[j].salaire)
{ e=T[i];
T[i]=T[j];
T[j]=e;
}
}
int main()
{
saisie();
afficher();
rechercher(T);
trier();
cout<<"\n----tableau trier----\n";
afficher();
system(" pause ");
return 0;
}
#include<iostream>
#include<cstdlib>
#include<myconio.h>
using namespace std;
struct etudiant
{
string nom,prenom,mention;
float moyenne,age;
int rang;
};
typedef struct etudiant etud;
etud e,T[20];int n,i,j,k;
void saisie()
{
cout<<" donnez le nombre d'etudiant: ";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"donnez le nom:";
cin>>e.nom;
cout<<" donnez le prenom:";
cin>>e.prenom;
cout<<" donnez son age:";
cin>>e.age;
cout<<" donnez sa moyenne:";
cin>>e.moyenne;
T[i]=e;
}
}
void afficher(int k)
{
cout<<" nom \tprenom\tage\t moyenne\t mention\trang \n";
for(i=0;i<n;i++)
{
cout<<T[i].nom <<"\t"<< T[i].prenom<<"\t"<< T[i].age<<"\t "<< T[i].moyenne<<"\t " <<
T[i].mention<<"\t" T[i].rang <<"\n";
}
cout<<endl;
}
void mention()
{
for(i=0;i<n;i++)
{
if(T[i].moyenne<10)
T[i].mention=" ajourne ";
else
if(T[i].moyenne<12)
T[i].mention=" passable ";
else
if(T[i].moyenne<14)
T[i].mention=" assez bien ";
else
if(T[i].moyenne<16)
Réalisé par SEWAVI Kokou Maurice Page 25
Support de cours de programmation en C++
T[i].mention=" bien ";
else
if(T[i].moyenne<18)
T[i].mention=" tres bien ";
else
if(T[i].moyenne<20)
T[i].mention=" excellent ";
}
}
void trier()
{
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(T[j].moyenne>T[i].moyenne)
{
e=T[i];
T[i]=T[j];
T[j]=e;
}
}
void rang()
{
T[0].rang=1;
i=0;
for(j=i+1;j<n;j++)
if(T[i].moyenne==T[j].moyenne)
T[j].rang=T[i].rang;
else
{
T[j].rang=j+1;
i=j;
}
}
void admis()
{
for(i=0;i<n;i++)
{
if(T[i].moyenne<10)
cout<<T[i].nom<<"\t"<<T[i].prenom<<"\t"<<T[i].age<<"\t"<<T[i].moyenne<<"\t"<<T[i].mention<<"\t"
<<T[i].rang<<"\n";
}
cout<<"\n-------\n";
}
void redoublant()
{
for(i=0;i<n;i++)
{
if(T[i].moyenne<10&&T[i].moyenne>=8)
cout<<T[i].nom<<"\t"<<T[i].prenom<<"\t"<<T[i].age<<"\t"<<T[i].moyenne<<"\t"<<T[i].mention<<"\t"
<<T[i].rang<<"\n";
}
Réalisé par SEWAVI Kokou Maurice Page 26
Support de cours de programmation en C++
cout<<"\n-------\n";
}
void exclu()
{
for(i=0;i<n;i++)
{
if(T[i].moyenne<8)
cout<<T[i].nom<<"\t"<<T[i].prenom<<"\t"<<T[i].age<<"\t"<<T[i].moyenne<<"\t"<<T[i].mention<<"\t"
<<T[i].rang<<"\n";
}
cout<<"\n-------\n";
}
int main()
{
saisie();
system("cls");
afficher();
system("pause");
mention();
trier();
rang();
system("cls");
afficher();
admis();
redoublant();
exclu();
system(" pause ");
return 0;
}
TD3 Structures
EXO1:
Soit une structure étudiant composée des champs Nom, Prénom, Age, Moyenne, Rang et Mention.
1. Écrire une fonction qui permet de saisir la liste des étudiants
3. Écrire une fonction qui permet d'affecter une mention aux étudiants
8. Écrire une fonction qui permet rechercher un étudiant en fonction de Nom et de son Prénom
EXO2:
Soit une structure monôme composée des champs coefficient et exposant.
1. Écrire une fonction qui permet de saisir la liste des monômes (polynôme)
2. Écrire une fonction qui permet de calculer et afficher la dérivée d'un polynôme
3. Écrire une fonction qui permet de calculer et afficher la primitive d'un polynôme
4. Écrire une fonction qui permet de calculer et afficher la somme de deux polynômes
Exo3:
Soit une structure article composée des champs désignation; quantité; prix et Montant.
2. Écrire une fonction qui permet d'afficher la facture correspondante aux articles saisis;
3. Écrire une fonction qui permet de calculer et afficher le montant total hors taxe; le montant
TVA (18%) du montant hors taxe et le montant TTC.