« Programmation C++/Les structures de contrôles/Exercices if...else et switch » : différence entre les versions
Ligne 14 : | Ligne 14 : | ||
<syntaxhighlight lang="cpp"> |
<syntaxhighlight lang="cpp"> |
||
#include <iostream> |
#include <iostream> |
||
#include <cmath> |
|||
using namespace std; |
using namespace std; |
||
Ligne 33 : | Ligne 32 : | ||
cout << " La solution est x = " << x << endl; |
cout << " La solution est x = " << x << endl; |
||
} |
} |
||
return |
return 0; |
||
} |
} |
||
Version du 7 octobre 2021 à 08:45
Exercices
EXERCICE 1
Ecrire 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 de cout.
- L'affectation.
Voici le fichier source :
#include <iostream>
using namespace std;
int main()
{ double a,b,x=0;
cout <<"rentrer la valeur de a" << endl; cin >> a ;
cout <<"rentrer 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
Ecrire 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 de cout.
- L'affectation.
Voici le fichier source :
#include<iostream>
using namespace std;
int main()
{
int a,max;
cout<<"Tapez la valeur numero 1 : ";cin>>a;max=a;
cout<<"Tapez la valeur numero 2 : ";cin>>a;if(a>max)max=a;
cout<<"Tapez la valeur numero 3 : ";cin>>a;if(a>max)max=a;
cout<<"Tapez la valeur numero 4 : ";cin>>a;if(a>max)max=a;
cout<<"Tapez la valeur numero 5 : ";cin>>a;if(a>max)max=a;
cout<<"Le plus grand vaut : "<<max<<endl;
return 0;
}
EXERCICE 3
Ecrire 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 de cout.
- L'affectation.
- Evaluation 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)
{ if (b!=0)
{ re1 = -c/b ;
cout << "la solution est " << re1 << endl;
} // Eq lineaire
else if (c==0) cout << " Tout x est solution " << endl;
else cout << " Il n'y a pas de solution " << endl;
}
else
{
delta = (b*b)-(4*a*c); // Il s'agit d'une equation quadratic
if(delta > 0)
{
re1 = (-b-sqrt(delta))/(a*2);
re2 = (-b+sqrt(delta))/(a*2);
cout << "Les solutions reels sont : " << re1 << " et " << re2 << endl;
}
else if(delta < 0)
{
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
Ecrire 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 de cout.
- 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
Ecrire 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 de cout.
- 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 ===
Ecrire 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 cin et de cout.
*Utilisation du if...else....
*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
Ecrire 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 de cout.
- 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
Ecrire 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 de cout.
- Utilisation du if...else....
- Utilisation des opérateurs logiques.
Voici le fichier source :
#include<iostream>
using namespace std;
int main()
{
double A,B,C,D,E,F;
cout<<"Tapez la valeur de A : ";cin>>A;
cout<<"Tapez la valeur de B : ";cin>>B;
cout<<"Tapez la valeur de C : ";cin>>C;
cout<<"Tapez la valeur de D : ";cin>>D;
if(A>C)E=A; else E=C;
if(B<D)F=D; else F=B;
if(E>F) cout<<"L'intersection est vide."<<endl;
else if(E==F)cout<<"L'intersection ne comporte qu'une valeur :"<<E<<endl;
else cout<<"L'intersection est l'intervalle ["<<E<<";"<<F<<"]"<<endl;
return 0;
}
EXERCICE 9
Ecrire 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 de cout.
- 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;
}