EXERCICES CORRIGÉS EN ALGORITHMIQUE : INSTRUCTIONS CONDITIONNELLES ET ALTERNATIVES
Exercice 1 :
Ecrire un algorithme qui calcule la valeur absolue d’un nombre réel .
|x|= x si x>0
|x|= -x si x<0
Correction exercice 1 :
Algorithme valeur_absolue;
Var
X :réels;
Debut
Ecrire(‘entrer un nombre : ‘) ;
Lire(X) ;
Si X>0 alors
Ecrire(‘la valeur absolue de X=’,X);
Sinon
Ecrire(‘la valeur absolue de X=’,X);
Finsi
fin
Exercice 2 :
Ecrire un algorithme qui permet d’afficher la valeur absolue de la différence entre deux nombres réels saisis au clavier.
|x-y|= x –y si x>y
|x-y|= -(x –y) si x<y
Correction exercice 2 :
Algorithme valeur_absolue;
Var
x,y :réels;
Debut
Ecrire(‘entrer x : ‘) ;
Lire(x) ;
Ecrire(‘entrer y : ‘) ;
Lire(y) ;
Si x>y alors
Ecrire(‘la valeur absolue de x-y=’,x-y);
Sinon
Ecrire(‘la valeur absolue de x-y =’,y-x);
Finsi
fin
Exercice 3 :
On désire écrire un algorithme qui permet d’afficher le jour correspondant à un chiffre allant de 1 à 7 , entré au clavier.
Résoudre ce problème avec deux méthodes : (si imbriquée , primitive cas).
Correction 1 exercice 3 :
Algorithme affichage_jour;
Var
jour :entier;
Debut
Ecrire(‘entrer un chiffre de 1 a 7 : ‘) ;
Lire(jour) ;
Si jour=1 alors
Ecrire(‘ lundi ’);
Sinon Si jour=2 alors
Ecrire(‘ mardi ’);
Sinon Si jour=3 alors
Ecrire(‘ mercredi ’);
Sinon Si jour=4 alors
Ecrire(‘ jeudi ’);
Sinon Si jour=5 alors
Ecrire(‘vendredi’);
Sinon Si jour=6 alors
Ecrire(‘samedi’);
Sinon Si jour=2 alors
Ecrire(‘dimanche’);
Sinon
Ecrire(‘ce n’est pas un jour de semaine’);
Finsi
Finsi
Finsi
Finsi
Finsi
Finsi
Finsi
fin
Correction 2 exercice 3 :
Algorithme affichage_jour;
Var
jour :entier;
Debut
Ecrire(‘entrer un chiffre de 1 a 7 : ‘) ;
Lire(jour) ;
Cas jour
1 : Ecrire(‘LUNDI ‘) ;
2 : Ecrire(‘MARDI ‘) ;
3 : Ecrire(‘MERCREDI ‘) ;
4 : Ecrire(‘JEUDI ‘) ;
5 : Ecrire(‘VENDREDI ‘) ;
6 : Ecrire(‘SAMEDI ‘) ;
7 : Ecrire(‘DIMANCHE ‘) ;
Sinon
Ecrire(‘ il faut choisir un nombre entre 1 et 7 !!!! ‘) ;
FinCas
fin
Exercice 4 :
Ecrire un algorithme qui permet de saisir deux nombres entiers x ,y et les afficher à l’écran dans l’ordre croissant.
Correction exercice 4 :
Algorithme tri_deux_nombre;
Var
x,y :réels;
Debut
Ecrire(‘entrer x : ‘) ;
Lire(x) ;
Ecrire(‘entrer y : ‘) ;
Lire(y) ;
Si x>y alors
Ecrire(y,’ ‘,x);
Sinon
Ecrire(y,’ ‘,x);
Finsi
fin
Exercice 5 :
Ecrire un algorithme qui teste si une année est bissextile ou non.
N.B.
Une année est bissextile si elle est divisible par 4 et pas par 100 ou si elle est divisible par 400.
Correction exercice 5 :
Algorithme annne_bissextile;
Var
annee :réels;
Debut
Ecrire(‘entrer l’année : ‘) ;
Lire(annee) ;
Si ((annee mod 4 =0 et annee mod 100 <> 0) ou annee mod 400 =0 ) alors
Ecrire(‘l’année que vous avez entrer est bissextile .’);
Sinon
Ecrire(‘l’année que vous avez entrer n’ est pas bissextile .’);
Finsi
fin
Exercice 6 :
Ecrire un algorithme permettant de résoudre une équation de deuxième degré : ax²+bx+c=0 .
Correction exercice 6 :
Algorithme calcul_permutation;
Var
A,b,c,d : réels ;
Debut
Ecrire(‘entrer le coefficient a : ‘) ;
Lire(a) ;
Ecrire(‘entrer le coefficient b : ‘) ;
Lire(b) ;
Ecrire(‘entrer le coefficient c : ‘) ;
Lire(c) ;
Si a=0 alors
Si b=0 alors
Si c=0 alors
Ecrire(‘ la solution est : S = R’) ;
sinon
Ecrire(‘ l’equation n’a pas de solution ’) ;
Finsi
sinon
Ecrire(‘la solution est : S = ’,-c/b) ;
Finsi
sinon
D<-- b*b-4+a*c ;
Si d=0 alors
Ecrire(‘la solution est : S = ’,-b/(2*a)) ;
Sinon si d>0 alors
Ecrire(‘l’equation a deux solution: S1= ’,(-b- /(2*a) ,’ et S2 = ‘,(-b+ /(2*a)) ;
Sinon
Ecrire(‘l’equation n’a pas de solution dans R ’) ;
Finsi
Finsi
Finsi
fin
Exercice 7 :
Une librairie décide de faire des remises sur les prix d’abonnement à une revue scientifique selon le menu suivant :
Ancien abonné : -15%
Etudiant : -20%
Nouvel abonné : 00%
Etranger : + 25%
Le calcul du prix d’abonnement de fait en fonction du tarif normal d’abonnement (TN) et de la qualité de l’abonné (Q). (une seule qualité est acceptée par abonné).
Ecrire un algorithme permettant de calculer le prix à payer.
Correction exercice 7 :
Algorithme librairie;
Var
Q : entier ;
TN,TR,R,RAP :réels;
Debut
Ecrire(‘Entrer le tarif normal : ‘) ;
Lire(TN) ;
Ecrire(‘--------------- MENU -----------------------‘) ;
Ecrire(‘----------Ancien Abonné------------------ 1‘) ;
Ecrire(‘-----------------Etudiant------------------- 2‘) ;
Ecrire(‘-----------------Nouvel abonné--------------- 3‘) ;
Ecrire(‘-------------------Etranger---------------------- 4‘) ;
Ecrire(’Entrer la qualité de l’abonné ? ‘’) ;
Lire(Q) ;
Cas Q
1 : TR <-- -0.15 ;
2 : TR <-- -0.20 ;
3 : TR <-- -0.00 ;
4 : TR <-- +0.25 ;
Fincas
Si (Q<1) ou (Q>4) alors
Ecrire(‘Erreur de choix’) ;
Sinon
R <-- TN *TR ;
PAR <-- TN+R ;
Ecrire(‘Le prix à payer est :’,PAP) ;
Finsi
Fin
Exercice 8 :
Ecrire un algorithme de résolution.
On dispose de trois nombres réels saisis au clavier.
Selon un choix effectué a partir d’un menu affiché a l’ecran, on désire calculer la somme ou le produit ou la moyenne ou chercher le minimum de ces trois nombres.
Le menu doit se présenter a l’ecran de la manière suivante :
------------------ MENU ---------------------
1 --------------somme ----------------------
2---------------produit ----------------------
3---------------Moyenne -------------------
4---------------Minimum -------------------
5---------------Maximum ------------------
-------------------------------------------------
Entrez votre choix ?
Correction exercice 8 :
Algorithme calcul;
Var
X,Y,Z,R:réels;
Choix : caractère ;
Debut
Ecrire(‘Entrer le premier nombre : ‘) ;
Lire(X) ;
Ecrire(‘Entrer le deuxième nombre : ‘) ;
Lire(Y) ;
Ecrire(‘Entrer le troisième nombre : ‘) ;
Lire(Z) ;
Ecrire(‘--------------- MENU -----------------------‘) ;
Ecrire(‘------------------Somme------------------- 1‘) ;
Ecrire(‘----------------- Produit-------------------- 2‘) ;
Ecrire(‘------------------Moyenne----------------- 3‘) ;
Ecrire(‘-----------------Minimum------------------ 4‘) ;
Ecrire(‘-----------------Maximum------------------ 5‘) ;
Ecrire(’Entrer votre choix ? ‘’) ;
Lire(choix) ;
Cas choix
1 : R <-- X+Y+Z;
2 : R <-- X*Y*Z;
3 : R <-- (X+Y+Z)/3;
4 : Si X<Y Alors
R ß X ;
Sinon
R <-- Y ;
Finsi
Si Z<R Alors
R <-- Z ;
finsi
5 : Si X>Y alors
R <-- X ;
Sinon
R <-- Y ;
Finsi
Si Z>R Alors
R <-- Z ;
finsi
Fincas
Si (choix>=1 ) et (choix<=5) alors
Ecrire(‘Le resultat est : ’,R) ;
Sinon
Ecrire(‘votre choix est mauvais … !’) ;
Finsi
Fincas
Si (Q<1) ou (Q>4) alors
Ecrire(‘Erreur de choix’) ;
Sinon
R <-- TN *TR ;
PAR <-- TN+R ;
Ecrire(‘Le prix à payer est :’,PAP) ;
Finsi
Fin
Exercice 9 :
Ecrire un algorithme qui compare deux dates représentées chacune par trois entiers.
Correction exercice 9 :
Algorithme compare_date;
Var
j1,m1,a1,j2,m2,a3: réels ;
Debut
Ecrire(‘************date 1 ***********‘) ;
Ecrire(‘jour: ‘) ;
Lire(j1) ;
Ecrire(‘Mois : ‘) ;
Lire(m1) ;
Ecrire(‘Année : ‘) ;
Lire(a1) ;
Ecrire(‘************date 2 ***********‘) ;
Ecrire(‘jour: ‘) ;
Lire(j2) ;
Ecrire(‘Mois : ‘) ;
Lire(m2) ;
Ecrire(‘Année : ‘) ;
Lire(a2) ;
Si a1>a2 alors
Ecrire (‘ la date 1 est plus grande que la date 2 ’) ;
Sinon si a1<a2 alors
Ecrire(‘la date 2 est plus grande que la date 1 ’) ;
Sinon Si m1>m2 alors
Ecrire (‘ la date 1 est plus grande que la date 2 ’) ;
Sinon si m1<m2 alors
Ecrire(‘la date 2 est plus grande que la date 1 ’) ;
Sinon Si j1>j2 alors
Ecrire (‘ la date 1 est plus grande que la date 2 ’) ;
Sinon si j1<j2 alors
Ecrire(‘la date 2 est plus grande que la date 1 ’) ;
Finsi
Finsi
Finsi
Finsi
finsi
fin
Ecrire un algorithme qui calcule la valeur absolue d’un nombre réel .
|x|= x si x>0
|x|= -x si x<0
Correction exercice 1 :
Algorithme valeur_absolue;
Var
X :réels;
Debut
Ecrire(‘entrer un nombre : ‘) ;
Lire(X) ;
Si X>0 alors
Ecrire(‘la valeur absolue de X=’,X);
Sinon
Ecrire(‘la valeur absolue de X=’,X);
Finsi
fin
Exercice 2 :
Ecrire un algorithme qui permet d’afficher la valeur absolue de la différence entre deux nombres réels saisis au clavier.
|x-y|= x –y si x>y
|x-y|= -(x –y) si x<y
Correction exercice 2 :
Algorithme valeur_absolue;
Var
x,y :réels;
Debut
Ecrire(‘entrer x : ‘) ;
Lire(x) ;
Ecrire(‘entrer y : ‘) ;
Lire(y) ;
Si x>y alors
Ecrire(‘la valeur absolue de x-y=’,x-y);
Sinon
Ecrire(‘la valeur absolue de x-y =’,y-x);
Finsi
fin
Exercice 3 :
On désire écrire un algorithme qui permet d’afficher le jour correspondant à un chiffre allant de 1 à 7 , entré au clavier.
Résoudre ce problème avec deux méthodes : (si imbriquée , primitive cas).
Correction 1 exercice 3 :
Algorithme affichage_jour;
Var
jour :entier;
Debut
Ecrire(‘entrer un chiffre de 1 a 7 : ‘) ;
Lire(jour) ;
Si jour=1 alors
Ecrire(‘ lundi ’);
Sinon Si jour=2 alors
Ecrire(‘ mardi ’);
Sinon Si jour=3 alors
Ecrire(‘ mercredi ’);
Sinon Si jour=4 alors
Ecrire(‘ jeudi ’);
Sinon Si jour=5 alors
Ecrire(‘vendredi’);
Sinon Si jour=6 alors
Ecrire(‘samedi’);
Sinon Si jour=2 alors
Ecrire(‘dimanche’);
Sinon
Ecrire(‘ce n’est pas un jour de semaine’);
Finsi
Finsi
Finsi
Finsi
Finsi
Finsi
Finsi
fin
Correction 2 exercice 3 :
Algorithme affichage_jour;
Var
jour :entier;
Debut
Ecrire(‘entrer un chiffre de 1 a 7 : ‘) ;
Lire(jour) ;
Cas jour
1 : Ecrire(‘LUNDI ‘) ;
2 : Ecrire(‘MARDI ‘) ;
3 : Ecrire(‘MERCREDI ‘) ;
4 : Ecrire(‘JEUDI ‘) ;
5 : Ecrire(‘VENDREDI ‘) ;
6 : Ecrire(‘SAMEDI ‘) ;
7 : Ecrire(‘DIMANCHE ‘) ;
Sinon
Ecrire(‘ il faut choisir un nombre entre 1 et 7 !!!! ‘) ;
FinCas
fin
Exercice 4 :
Ecrire un algorithme qui permet de saisir deux nombres entiers x ,y et les afficher à l’écran dans l’ordre croissant.
Correction exercice 4 :
Algorithme tri_deux_nombre;
Var
x,y :réels;
Debut
Ecrire(‘entrer x : ‘) ;
Lire(x) ;
Ecrire(‘entrer y : ‘) ;
Lire(y) ;
Si x>y alors
Ecrire(y,’ ‘,x);
Sinon
Ecrire(y,’ ‘,x);
Finsi
fin
Exercice 5 :
Ecrire un algorithme qui teste si une année est bissextile ou non.
N.B.
Une année est bissextile si elle est divisible par 4 et pas par 100 ou si elle est divisible par 400.
Correction exercice 5 :
Algorithme annne_bissextile;
Var
annee :réels;
Debut
Ecrire(‘entrer l’année : ‘) ;
Lire(annee) ;
Si ((annee mod 4 =0 et annee mod 100 <> 0) ou annee mod 400 =0 ) alors
Ecrire(‘l’année que vous avez entrer est bissextile .’);
Sinon
Ecrire(‘l’année que vous avez entrer n’ est pas bissextile .’);
Finsi
fin
Exercice 6 :
Ecrire un algorithme permettant de résoudre une équation de deuxième degré : ax²+bx+c=0 .
Correction exercice 6 :
Algorithme calcul_permutation;
Var
A,b,c,d : réels ;
Debut
Ecrire(‘entrer le coefficient a : ‘) ;
Lire(a) ;
Ecrire(‘entrer le coefficient b : ‘) ;
Lire(b) ;
Ecrire(‘entrer le coefficient c : ‘) ;
Lire(c) ;
Si a=0 alors
Si b=0 alors
Si c=0 alors
Ecrire(‘ la solution est : S = R’) ;
sinon
Ecrire(‘ l’equation n’a pas de solution ’) ;
Finsi
sinon
Ecrire(‘la solution est : S = ’,-c/b) ;
Finsi
sinon
D<-- b*b-4+a*c ;
Si d=0 alors
Ecrire(‘la solution est : S = ’,-b/(2*a)) ;
Sinon si d>0 alors
Ecrire(‘l’equation a deux solution: S1= ’,(-b- /(2*a) ,’ et S2 = ‘,(-b+ /(2*a)) ;
Sinon
Ecrire(‘l’equation n’a pas de solution dans R ’) ;
Finsi
Finsi
Finsi
fin
Exercice 7 :
Une librairie décide de faire des remises sur les prix d’abonnement à une revue scientifique selon le menu suivant :
Ancien abonné : -15%
Etudiant : -20%
Nouvel abonné : 00%
Etranger : + 25%
Le calcul du prix d’abonnement de fait en fonction du tarif normal d’abonnement (TN) et de la qualité de l’abonné (Q). (une seule qualité est acceptée par abonné).
Ecrire un algorithme permettant de calculer le prix à payer.
Correction exercice 7 :
Algorithme librairie;
Var
Q : entier ;
TN,TR,R,RAP :réels;
Debut
Ecrire(‘Entrer le tarif normal : ‘) ;
Lire(TN) ;
Ecrire(‘--------------- MENU -----------------------‘) ;
Ecrire(‘----------Ancien Abonné------------------ 1‘) ;
Ecrire(‘-----------------Etudiant------------------- 2‘) ;
Ecrire(‘-----------------Nouvel abonné--------------- 3‘) ;
Ecrire(‘-------------------Etranger---------------------- 4‘) ;
Ecrire(’Entrer la qualité de l’abonné ? ‘’) ;
Lire(Q) ;
Cas Q
1 : TR <-- -0.15 ;
2 : TR <-- -0.20 ;
3 : TR <-- -0.00 ;
4 : TR <-- +0.25 ;
Fincas
Si (Q<1) ou (Q>4) alors
Ecrire(‘Erreur de choix’) ;
Sinon
R <-- TN *TR ;
PAR <-- TN+R ;
Ecrire(‘Le prix à payer est :’,PAP) ;
Finsi
Fin
Exercice 8 :
Ecrire un algorithme de résolution.
On dispose de trois nombres réels saisis au clavier.
Selon un choix effectué a partir d’un menu affiché a l’ecran, on désire calculer la somme ou le produit ou la moyenne ou chercher le minimum de ces trois nombres.
Le menu doit se présenter a l’ecran de la manière suivante :
------------------ MENU ---------------------
1 --------------somme ----------------------
2---------------produit ----------------------
3---------------Moyenne -------------------
4---------------Minimum -------------------
5---------------Maximum ------------------
-------------------------------------------------
Entrez votre choix ?
Correction exercice 8 :
Algorithme calcul;
Var
X,Y,Z,R:réels;
Choix : caractère ;
Debut
Ecrire(‘Entrer le premier nombre : ‘) ;
Lire(X) ;
Ecrire(‘Entrer le deuxième nombre : ‘) ;
Lire(Y) ;
Ecrire(‘Entrer le troisième nombre : ‘) ;
Lire(Z) ;
Ecrire(‘--------------- MENU -----------------------‘) ;
Ecrire(‘------------------Somme------------------- 1‘) ;
Ecrire(‘----------------- Produit-------------------- 2‘) ;
Ecrire(‘------------------Moyenne----------------- 3‘) ;
Ecrire(‘-----------------Minimum------------------ 4‘) ;
Ecrire(‘-----------------Maximum------------------ 5‘) ;
Ecrire(’Entrer votre choix ? ‘’) ;
Lire(choix) ;
Cas choix
1 : R <-- X+Y+Z;
2 : R <-- X*Y*Z;
3 : R <-- (X+Y+Z)/3;
4 : Si X<Y Alors
R ß X ;
Sinon
R <-- Y ;
Finsi
Si Z<R Alors
R <-- Z ;
finsi
5 : Si X>Y alors
R <-- X ;
Sinon
R <-- Y ;
Finsi
Si Z>R Alors
R <-- Z ;
finsi
Fincas
Si (choix>=1 ) et (choix<=5) alors
Ecrire(‘Le resultat est : ’,R) ;
Sinon
Ecrire(‘votre choix est mauvais … !’) ;
Finsi
Fincas
Si (Q<1) ou (Q>4) alors
Ecrire(‘Erreur de choix’) ;
Sinon
R <-- TN *TR ;
PAR <-- TN+R ;
Ecrire(‘Le prix à payer est :’,PAP) ;
Finsi
Fin
Exercice 9 :
Ecrire un algorithme qui compare deux dates représentées chacune par trois entiers.
Correction exercice 9 :
Algorithme compare_date;
Var
j1,m1,a1,j2,m2,a3: réels ;
Debut
Ecrire(‘************date 1 ***********‘) ;
Ecrire(‘jour: ‘) ;
Lire(j1) ;
Ecrire(‘Mois : ‘) ;
Lire(m1) ;
Ecrire(‘Année : ‘) ;
Lire(a1) ;
Ecrire(‘************date 2 ***********‘) ;
Ecrire(‘jour: ‘) ;
Lire(j2) ;
Ecrire(‘Mois : ‘) ;
Lire(m2) ;
Ecrire(‘Année : ‘) ;
Lire(a2) ;
Si a1>a2 alors
Ecrire (‘ la date 1 est plus grande que la date 2 ’) ;
Sinon si a1<a2 alors
Ecrire(‘la date 2 est plus grande que la date 1 ’) ;
Sinon Si m1>m2 alors
Ecrire (‘ la date 1 est plus grande que la date 2 ’) ;
Sinon si m1<m2 alors
Ecrire(‘la date 2 est plus grande que la date 1 ’) ;
Sinon Si j1>j2 alors
Ecrire (‘ la date 1 est plus grande que la date 2 ’) ;
Sinon si j1<j2 alors
Ecrire(‘la date 2 est plus grande que la date 1 ’) ;
Finsi
Finsi
Finsi
Finsi
finsi
fin
Ads