Programmation C++/Les structures de contrôles/Exercices if...else et switch
Exercices
[modifier | modifier le wikicode]EXERCICE 1
[modifier | modifier le wikicode]Écrire un programme qui résout l' équation AX+B=0. Bien évidemment, on n'oubliera pas tous les cas particuliers (notamment les cas "tout x est solution" et "pas de solution").
Cet exercice a pour but de vérifier les points techniques suivants :
- La notion de variables et leur déclaration.
- Modélisation d'un problème mathématique simple.
- Utilisation de if imbriqués.
- L'utilisation de
cin
et decout
. - L'affectation.
Voici le fichier source :
#include <iostream>
using namespace std;
int main()
{ double a,b,x=0;
cout <<"Entrer la valeur de a" << endl; cin >> a ;
cout <<"Entrer la valeur de b" << endl; cin >> b ;
cout << " On trouve la solution de " << a << "x + " << b << " = 0 " << endl;
if (a==0)
if (b==0) cout << " tout est solution" << endl;
else cout << " pas de solution" << endl;
else
{
x = -b/a ;
cout << " La solution est x = " << x << endl;
}
return 0;
}
EXERCICE 2
[modifier | modifier le wikicode]Écrire un programme qui demande à l'utilisateur de taper 5 entiers et qui affiche le plus grand. Le programme ne devra utiliser que 2 variables.
Cet exercice a pour but de vérifier les points techniques suivants :
- La notion de variables et leur déclaration.
- Recherche du plus grand élément.
- Utilisation du if.
- L'utilisation de
cin
et decout
. - L'affectation.
Voici le fichier source :
#include <iostream>
// Exercice 8 Chapitre 2
using namespace std;
int main()
{
int a,maxv;
cout << "Tapez la valeur numéro 1 : "; cin>>a; maxv=a;
cout << "Tapez la valeur numéro 2 : "; cin>>a; if(a>maxv) maxv=a;
cout << "Tapez la valeur numéro 3 : "; cin>>a; if(a>maxv) maxv=a;
cout << "Tapez la valeur numéro 4 : "; cin>>a; if(a>maxv) maxv=a;
cout << "Tapez la valeur numéro 5 : "; cin>>a; if(a>maxv) maxv=a;
cout << "Le plus grand valeur vaut : " << maxv << endl;
return 0;
}
EXERCICE 3
[modifier | modifier le wikicode]Écrire un programme qui résout l’équation ax2+bx+c=0 en envisageant tous les cas particuliers.
Cet exercice a pour but de vérifier les points techniques suivants :
- La notion de variables et leur déclaration.
- L'utilisation de
cin
et decout
. - L'affectation.
- Évaluation d'expressions "complexes".
- Utilisation de la bibliothèque cmath.
- Structure de
if... else
imbriquées avec de nombreux cas particuliers. - Proposition d'un jeu de tests complet pour gérer ces cas particuliers.
- Modélisation d'un problème issu des mathématiques.
Voici le fichier source :
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a, b, c, re1, re2, im, delta;
cout << "Entrez a : " ; cin >> a ;
cout << "Entrez b : " ; cin >> b ;
cout << "Entrez c : " ; cin >> c ;
cout << "Ce programme trouve la solution de " << a << "x^2 + "
<< b << " x + " << c << " = 0 " << endl << endl;
if (a == 0) // Il s'agit d'une équation linéaire
{
if (b!=0)
{
re1 = -c/b ;
cout << "la solution est " << re1 << endl;
} // Équation linéaire
else if (c==0) cout << " Tout x est solution " << endl;
else cout << " Il n'y a pas de solution " << endl;
}
else // Il s'agit d'une équation quadratique
{
delta = (b*b)-(4*a*c);
if(delta > 0) // Il y a deux solutions réelles
{
re1 = (-b-sqrt(delta))/(a*2);
re2 = (-b+sqrt(delta))/(a*2);
cout << "Les solutions réelles sont : " << re1 << " et " << re2 << endl;
}
else if(delta < 0) // Il y a deux solutions complexes
{
re1 = -b/(a*2);
im = sqrt(-delta)/(a*2);
cout << "Les solutions complexes sont : " << re1 << " + i" << im <<
" et z2 = " << re1 << " - i" << im << endl;
}
else // on arrive ici seulement si delta == 0
{
re1 = -b/(2*a);
cout << "il y a 1 solution : = " << re1 << endl ;
}
}
return 0;
}
EXERCICE 4
[modifier | modifier le wikicode]Écrire un programme qui demande à l’utilisateur de saisir les coordonnées de 4 points A, B, C et D puis qui affiche les informations suivantes : * si A et B sont confondus, on affiche ‘A et B sont confondus’ ;
- si C et D sont confondus, on affiche ‘ C et D sont confondus’ ;
ù si A et B ne sont pas confondus et si C et D ne sont pas confondus , on affiche soit ‘AB et CD sont parallèles’, soit 'AB et CD sont confondues', soit ‘AB et CD sont sécantes’. Dans ce dernier cas, on affiche les coordonnées de l'intersection de AB et de CD.
Cet exercice a pour but de vérifier les points techniques suivants :
- La notion de variables et leur déclaration.
- L'utilisation de
cin
et decout
. - L'affectation.
- Structure de
if... else
imbriquées. - Modélisation d'un problème issu de la géométrie sous forme informatique.
- Traiter de manière informatique une suite de calculs mathématiques relativement longue *comportant de nombreux cas particuliers.
- Proposition d'un jeu de tests complet pour gérer ces cas particuliers.
Voici le fichier source :
#include<iostream>
using namespace std;
int main()
{
double XA,YA,XB,YB,XC,YC,XD,YD,XI,YI;
double DX1,DY1,R1,DX2,DY2,R2,K;
cout << "Tapez l'abscisse de A : "; cin >> XA;
cout << "Tapez l'ordonnée de A : "; cin >> YA;
cout << "Tapez l'abscisse de B : "; cin >> XB;
cout << "Tapez l'ordonnée de B : "; cin >> YB;
cout << "Tapez l'abscisse de C : "; cin >> XC;
cout << "Tapez l'ordonnée de C : "; cin >> YC;
cout << "Tapez l'abscisse de D : "; cin >> XD;
cout << "Tapez l'ordonnée de D : "; cin >> YD;
DX1 = XB - XA;
DY1 = YB - YA;
DX2 = XD - XC;
DY2 = YD - YC;
if (DX1==0 && DY1==0)
cout << "A et B sont confondus" << endl;
if (DX2==0 && DY2==0)
cout << "C et D sont confondus" << endl;
else
{
K=DX1*DY2-DX2*DY1;
if (K==0)
{
if (DX1*(YC-YA)==DY1*(XC-XA))
cout << "AB et CD sont confondues." << endl;
else cout << "AB et CD sont parallèles." << endl;
}
else
{
cout<<"Les droites sont sécantes."<<endl;
R1=YA*XB-XA*YB;
R2=YC*XD-XC*YD;
XI=(R1*DX2-R2*DX1)/K;
YI=(R1*DY2-R2*DY1)/K;
cout<<"L'abscisse de l'intersection est : "<<XI<<endl;
cout<<"L'ordonnée de l'intersection est : "<<YI<<endl;
}
}
return 0;
}
EXERCICE 5
[modifier | modifier le wikicode]Écrire un programme qui demande à l’utilisateur de saisir un entier X et qui affiche la valeur absolue de X.
Cet exercice a pour but de vérifier les points techniques suivants :
- La notion de variables et leur déclaration.
- L'utilisation de
cin
et decout
. - Utilisation rudimentaire du if.
Voici le fichier source :
#include<iostream>
using namespace std;
int main()
{
int X;
cout<<"Tapez la valeur de X :"; cin>>X;
if (X<0) X = -X;
cout<<"La valeur absolue de X est : "<<X<<endl;
return 0;
}
</pre>
}}
=== EXERCICE 6 ===
Écrire un programme qui demande à l’utilisateur de saisir deux entiers strictement positifs A et B et qui indique si A est divisible par B.
{{Boîte déroulante|titre=Solution|contenu=
Cet exercice a pour but de vérifier les points techniques suivants :
*La notion de variables et leur déclaration.
*L'utilisation de <code>cin</code> et de <code>cout</code>.
*Utilisation du <code>if...else...</code>.
*Validation de données.
Voici le fichier source :
<syntaxhighlight lang="cpp">
#include<iostream>
using namespace std;
int main()
{
int A,B;
cout<<"Tapez la valeur de A : ";cin>>A;
cout<<"Tapez la valeur de B : ";cin>>B;
if (A<=0) cout<<"A n'est pas valide !"<<endl;
else if (B<=0) cout<<"B n'est pas valide !"<<endl;
else if (A%B==0) cout<<A<<" est divisible par "<<B<<endl;
else cout<<A<<" n'est pas divisible par "<<B<<endl;
return 0;
}
EXERCICE 7
[modifier | modifier le wikicode]É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.
Cet exercice a pour but de vérifier les points techniques suivants :
- La notion de variables et leur déclaration.
- L'utilisation de
cin
et decout
. - Utilisation du
if...else...
. - Utilisation des opérateurs logiques.
Voici le fichier source :
#include<iostream>
using namespace std;
int main()
{
int A,B,C;
cout<<"Tapez la valeur de A : ";cin>>A;
cout<<"Tapez la valeur de B : ";cin>>B;
cout<<"Tapez la valeur de C : ";cin>>C;
if( (C>A && C<B)||(C<A && C>B)) cout<<"C est compris entre A et B"<<endl;
else cout<<"C n'est pas compris entre A et B"<<endl;
return 0;
}
EXERCICE 8
[modifier | modifier le wikicode]Écrire un programme qui demande à l’utilisateur de saisir 4 entiers A, B, C et D, puis qui indique quelle est l'intersection des intervalles [AB] et [CD].
Cet exercice a pour but de vérifier les points techniques suivants :
- La notion de variables et leur déclaration.
- L'utilisation de
cin
et decout
. - Utilisation du
if...else...
. - Utilisation des opérateurs logiques.
Voici le fichier source :
#include<iostream>
using namespace std;
int main()
{
double a=2,b=10,c=-2,d=5,minintv,maxintv;
cout << "Le premier intervalle [A , B] : ";
cout << "Tapez la valeur de A : "; cin >> a;
cout << "Tapez la valeur de B : "; cin >> b;
cout << "Le deuxième intervalle [C , D] : ";
cout << "Tapez la valeur de C : "; cin >> c;
cout << "Tapez la valeur de D : "; cin >> d;
// Attention ce programme ne fonctionne correctement que si b > a et d > c
// Ce défaut peut être corrigé : comment ?
if(a > c) minintv = a; else minintv = c;
if(b < d) maxintv = b; else maxintv = d;
if (minintv > maxintv) cout << "L'intersection est vide." << endl;
else if (minintv == maxintv) cout << "L'intersection ne comporte qu'une valeur :" << minintv << endl;
else cout << "L'intersection des intervalles [" << a << ";" << b << "]"
<< " et [" << c << ";" << d << "] est l'intervalle [" << minintv << ";" << maxintv << "]" << endl;
return 0;
}
EXERCICE 9
[modifier | modifier le wikicode]É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".
Cet exercice a pour but de vérifier les points techniques suivants :
- La notion de variables et leur déclaration.
- L'utilisation de
cin
et decout
. - Utilisation du
if...else...
. - Utilisation des opérateurs logiques.
- Proposition d'un jeu de tests complet.
Voici le fichier source :
#include<iostream>
using namespace std;
int main()
{
int A;
cout<<"Tapez la valeur de A : ";cin>>A;
if (A%2==0 || A<83 || A>101) cout<<"ERREUR"<<endl;
else cout<<"PAS D'ERREUR"<<endl;
return 0;
}