Exercice d`algorithmique

publicité
Exercices d’algorithmique
IG1
EXERCICES D’ALGORITHMIQUE
LES INSTRUCTIONS DE BASE
Exercice 1
Écrire un algorithme qui effectue le quotient et le reste de la division de 2 nombres
que l’utilisateur a préalablement entré au clavier
Aide : il faut prévoir deux variables de type réel (à virgule) que l’utilisateur va saisir et mettre
le résultat du calcul dans une autre variable de type entier. Ceci aura pour effet de tronquer
les chiffres après la virgule puisque une variable de type entier ne peut contenir de chiffre à
virgule.
Un petit aide mémoire :
5/2 = 2,5. Si cette valeur est mise dans une variable de type entier,
alors la variable contiendra 2 soit le quotient
Pour obtenir le reste, il existe ce qu’on appelle le modulo ! ! ! ! Késako, me dirait vous ... eh bien il
permet tout simplement d’obtenir le reste d’une division.
L’expression :
5 modulo 2 est égale à 1. La variable contenant le reste doit être de type réel car le reste peut être un
chiffre à virgule.
Exercice 2
Écrire un algorithme qui effectue la permutation circulaire de trois nombres X, Y et
Z
Exemple :
Page 1 sur 18
Exercices d’algorithmique
IG1
Aide : Il faut utiliser 4 variables afin d’éviter « d’écraser » le contenu d’une des trois variables
saisies ! ! !
Exercice 3
Quel est le résultat de la suite des trois affectations suivantes ?
XX+Y
YX–Y
XX–Y
Aide : tester la suite d’instructions avec des chiffres !!
Exercice 4
Que pensez vous de l’algorithme suivant ?
Algorithme Permute
Variable X, Y : Réel
Début
Afficher(« Tapez 2 nombres »)
Saisir(X,Y)
Afficher(« Après permutation, les 2 nombres sont : »,Y, X)
Fin
Exercice 5
Écrire un algorithme lisant 2 nombres, l’un positif et l’autre négatif, et afficher
celui qui est positif (vérifier que l’utilisateur a bien rentré 2 nombres vérifiant les
conditions voulues)
Aide : Utiliser les instructions conditionnelles.
Exercice 6
Écrire un algorithme qui détermine le plus grand des trois nombres entiers
X,Y, Z.
Page 2 sur 18
Exercices d’algorithmique
IG1
Aide : Nous ne pouvons comparer 3 nombres en une seule instruction ! C’est pourquoi nous
vous conseillons d’utiliser une variable qui contiendra la valeur maximum tout au long de
l’algorithme.
Exercice 7
Écrire un algorithme qui détermine le plus grand des trois nombres entiers X,Y,Z
Aide : Nous ne pouvons comparer 3 nombres en une seule instruction ! C’est pourquoi nous
vous conseillons d’utiliser une variable qui contiendra la valeur minimum tout au long de
l’algorithme.
Exercice 8
Écrire un algorithme qui détermine le plus petit et le plus grand de trois nombres
entiers X, Y et Z, en minimisant le nombre de comparaisons effectuées
Aide : inspirez vous des 2 exercices précédent ;-)
Exercice 9
A quel problème l’algorithme mystère suivant apporte-t-il une solution ?
Algorithme Mystère
{... ... ... ?}
Variable U, V, W, R, S, Z : caractère
Début
Saisir(U,V,W,R,S)
Si U # S alors
Début
Z S
S U
UZ
Fin
Si V # R alors
Page 3 sur 18
Exercices d’algorithmique
IG1
Début
ZR
RV
VZ
Fin
Afficher(U,V,W,R,S)
Fin
Exercice 10
Ecrire un algorithme vérifiant que trois nombres peuvent être les longueurs des
cotés d’un triangle.
Aide : 3 segments peuvent former un triangle si la somme des longueur des 2 cotés les plus
petits est supérieure à la longueur du plus grand.
Exercice 11
Écrire un algorithme classant 3 nombres par ordre croissant
Aide : Utilisez les instructions conditionnelles.
Exercice 12
Écrire un algorithme classant 3 nombres par ordre décroissant
Aide : Utilisez les instructions conditionnelles.
Exercice 13
Écrire un algorithme qui calcule la valeur absolue de l’expression BX+C, les
valeurs de X, B et C étant données
Aide : La valeur absolue d’un nombre positif est ce même nombre. La valeur absolue d’un
nombre négatif est son opposé : 5 pour –5 par exemple ! !
Exercice 14
Page 4 sur 18
Exercices d’algorithmique
IG1
Éditer le signe du produit de 2 nombres, sans calculer ce produit
Aide :
Signe du premier nombre : Signe du second
nombre :
Positif
Positif
Positif
Négatif
Négatif
Positif
Négatif
Négatif
Nul
Positif ou négatif
Positif ou négatif
Nul
Signe du produit des 2 nombres
Positif
Négatif
Négatif
Positif
Nul
Nul
Exercice 15
Sans calculer leur somme, déterminer le signe de la somme de deux nombres
Exercice 16
Étant donné 3 nombres X, Y, Z classés par ordre croissant, et un nombre N
quelconque, éditer dans l’ordre les trois plus petites valeurs de ces quatre
données
Exercice 17
Étant donné 3 nombres X, Y, Z classés par ordre décroissant, et un nombre N
quelconque, éditer dans l’ordre les trois plus petites valeurs de ces quatre
données
Exercice 18
Étant donné 3 nombres X, Y, Z classés par ordre croissant, et un nombre N
quelconque, éditer dans l’ordre les trois plus grandes valeurs de ces quatre
données
Page 5 sur 18
Exercices d’algorithmique
IG1
Corrigé de l'exercice 1
Solution :
Algorithme division
{affiche le quotient et le reste d’une division de deux nombres que l’utilisateur a rentré au clavier}
Variables reste, dividende, diviseur : Réel ; quotient: Entier
Début
Afficher(« saisir le dividende : ») ;
Saisir(dividende) ;
Afficher(« saisir le diviseur : ») ;
Saisir(diviseur) ;
Si diviseur # 0 alors
début
Quotient  dividende / diviseur
Reste  dividende modulo diviseur
Afficher(« le quotient de la division : » ,dividende, « par »,diviseur, « est : »,quotient)
Afficher(« le reste de la division : » ,dividende, « par »,diviseur, « est : »,reste)
Fin
Sinon
Afficher(« division par 0 interdite »)
Fin
Corrigé de l'exercice 2
Algorithme permutation 3 nombres
{permute 3 nombres}
Variables X, Y, Z, Temporaire: Entier
Début
Afficher(« saisir X : ») ;
Page 6 sur 18
Exercices d’algorithmique
IG1
Saisir(X) ;
Afficher(« saisir Y : ») ;
Saisir(Y) ;
Afficher(« saisir Z : ») ;
Saisir(Z) ;
Afficher(« Avant permutation »)
Afficher(« X vaut : »,X, « Y vaut : »,Y, « Z vaut : »,Z)
Temporaire  Z
ZY
YX
X  Temporaire
Afficher(« Après permutation ») ;
Afficher(« X vaut : »,X, « Y vaut : »,Y, « Z vaut : »,Z)
Fin
Corrigé de l'exercice 3
Solution :
A la fin de la suite d’instructions, X vaut la valeur initiale de Y et Y vaut la valeur initiale de X. C’est
une suite d’instructions qui nous permet d’échanger le contenu de deux variables. Elle aurait pu être
effectuée comme suit avec une variable temporaire Z :
ZY
YX
X Z
Corrigé de l'exercice 4
Solution :
Cet algorithme n’est pas bon.
Ici, il se passe quelque chose de très grave ... On affiche à l’utilisateur un échange de nombre en
trafiquant l’affichage. L’opération de permutation n’a pas eu lieu. Imaginez qu’un logiciel vous dise
qu’il a sauvegardé votre document et qu’il ne l’a pas fait !!! Nous sommes dans le même cas ici.
Page 7 sur 18
Exercices d’algorithmique
IG1
Corrigé de l'exercice 5
Solution :
Algorithme affiche positif
Variable X, Y : Réel ; PositifOK, NegatifOK : Booléen
Début
PositifOK  faux
NegatifOK  faux
Afficher(« Tapez 2 nombres »)
Saisir(X,Y)
Si (X > 0) ou (Y > 0) alors
PositifOK  vrai {un chiffre positif a été rentré}
Si (X < 0) ou (Y < 0) alors
NegatifOK  vrai {un chiffre négatif a été rentré}
Si PositifOK et NegatifOK alors {Si un chiffre négatif et un chiffre positif ont étés rentrés}
Début
Si X > 0 alors {Si X est positif on l’affiche}
Afficher(« X est positif : », X)
Sinon
{sinon cela veut dire que c’est Y qui est positif. Dans ce cas on affiche Y}
Afficher(« Y est positif : », Y)
Fin
Sinon
Afficher(« Il fallait rentrer un nombre positif et un nombre négatif »)
Fin
Page 8 sur 18
Exercices d’algorithmique
IG1
Corrigé de l'exercice 6
Solution :
Algorithme max de 3 entiers
Variables X, Y, Z, Max: Entier
Début
Afficher(« saisir X : ») ;
Saisir(X) ;
Afficher(« saisir Y : ») ;
Saisir(Y) ;
Afficher(« saisir Z : ») ;
Saisir(Z) ;
Max  X
Si Y > Max alors
Max  Y
Si Z > Max alors
Max  Z
Afficher(« la valeur maximale saisie est : »,Max)
Fin
Corrigé de l'exercice 7
Solution :
Algorithme min de 3 entiers
Variables X, Y, Z, Min: Entier
Début
Page 9 sur 18
Exercices d’algorithmique
IG1
Afficher(« saisir X : ») ;
Saisir(X) ;
Afficher(« saisir Y : ») ;
Saisir(Y) ;
Afficher(« saisir Z : ») ;
Saisir(Z) ;
Min  X
Si Y < Min alors
Min  Y
Si Z < Min alors
Min  Z
Afficher(« la valeur minimum saisie est : »,Min)
Fin
Corrigé de l'exercice 8
Solution :
Algorithme max et min de 3 entiers
Variables X, Y, Z, Min, Max: Entier
Début
Afficher(« saisir X : ») ;
Saisir(X) ;
Afficher(« saisir Y : ») ;
Saisir(Y) ;
Afficher(« saisir Z : ») ;
Saisir(Z) ;
Min  X
Page 10 sur 18
Exercices d’algorithmique
IG1
Max X
Si Y < Min alors
Min  Y
Sinon
Max  Y
Si Z < Min alors
Min  Z
Sinon Si Z > Max alors
Max  Z
Afficher(« la valeur maximale saisie est : »,Max)
Afficher(« la valeur minimum saisie est : »,Min)
Fin
Corrigé de l'exercice 9
Il inverse les valeurs de quatre variables 2 à 2. S par U, U par S, R par V et V par R. Si on fait
attention à l’ordre dans lequel ont étés saisis les 5 caractères, on se rend compte qu’il sont affichés
dans l’ordre inverse, en partant du dernier saisi ! !
Corrigé de l'exercice 10
Algorithme triangle
{dit si 3 longueurs peuvent être les cotés d’un triangle}
Variables X, Y, Z, Max, Somme2petits : Réel
Début
Afficher(« saisir X : ») ;
Saisir(X) ;
Afficher(« saisir Y : ») ;
Page 11 sur 18
Exercices d’algorithmique
IG1
Saisir(Y) ;
Afficher(« saisir Z : ») ;
Saisir(Z) ;
Max  X
Somme2petits  0
Si Y > Max alors
Début
Somme2petits  Somme2petits + Max
Max  Y
Fin
Sinon
Somme2petits  Somme2petits + Y
Si Z > Max alors
Début
Somme2petits  Somme2petits + Max
Max  Z
Fin
Sinon
Somme2petits  Somme2petits + Z
Si Somme2petits > Max alors
Afficher(« les trois longueurs : »,X,Y,Z, « peuvent former un triangle »)
Sinon
Afficher(« les trois longueurs : »,X,Y,Z, « ne peuvent pas former un triangle »)
Fin
Page 12 sur 18
Exercices d’algorithmique
IG1
Corrigé de l'exercice 11
Algorithme tri croissant
{affiche 3 nombres dans l’ordre croissant}
Variables X, Y, Z : Réel
Début
Afficher(« saisir 3 nombres : ») ;
Saisir(X,Y,Z) ;
Si (X < Y) et (Y < Z) alors
Afficher(X,Y,Z)
Sinon
si (X < Z) et (Z < Y) alors
Afficher(X,Z,Y)
Sinon
si (Y < X) et (X < Z) alors
Afficher(Y,X,Z)
Sinon
si (Y < Z) et (Z < X) alors
Afficher(Y,Z,X)
Sinon
si (Z < X) et (X < Y) alors
Afficher(Z,X,Y)
Sinon
si (Z < Y) et (Y < X) alors
Afficher(Z,Y,X)
Fin
Corrigé de l'exercice 12
Algorithme tri décroissant
Page 13 sur 18
Exercices d’algorithmique
IG1
{affiche 3 nombres dans l’ordre décroissant}
Variables X, Y, Z : Réel
Début
Afficher(« saisir 3 nombres : ») ;
Saisir(X,Y,Z) ;
Si (X > Y) et (Y > Z) alors
Afficher(X,Y,Z)
Sinon
si (X > Z) et (Z > Y) alors
Afficher(X,Z,Y)
Sinon
si (Y > X) et (X > Z) alors
Afficher(Y,X,Z)
Sinon
si (Y > Z) et (Z > X) alors
Afficher(Y,Z,X)
Sinon
si (Z > X) et (X > Y) alors
Afficher(Z,X,Y)
Sinon
si (Z > Y) et (Y > X) alors
Afficher(Z,Y,X)
Fin
Corrigé de l'exercice 13
Algorithme valeur absolue
{calcule la valeur absolue de l’expression BX+C}
Variables B, X, C, resultat : Réel
Page 14 sur 18
Exercices d’algorithmique
IG1
Début
Afficher(« saisir 3 nombres : ») ;
Saisir(B,X,C) ;
Resultat  (B*X) + C
Si Resultat < 0 alors
Début
{pour inverser le signe}
Resultat  - Resultat
Fin
Afficher(« la valeur absolue est : », resultat)
Fin
Corrigé de l'exercice 14
Algorithme signe produit
{donne le signe d’un produit de 2 nombres sans calculer le produit}
Variables prem, deuz : Réel
Début
Afficher(« saisir 2 nombres : ») ;
Saisir(Prem,deuz) ;
Si (Prem = 0) ou (deuz = 0) alors
Afficher(« le résultat du produit des deux nombre est : nul »)
Sinon
Début
{Si les 2 nombres sont tous les deux positifs ou tous les deux négatifs, le produit est positif, sinon
négatif. Remarquez bien les parenthèses qui joue un rôle important dans la priorité de l’évaluation de
l’instruction conditionnelle}
Si (Prem > 0 et Deuz > 0) ou (Prem < 0 et Deuz < 0) alors
Afficher(« le résultat du produit des deux nombre est : positif »)
Page 15 sur 18
Exercices d’algorithmique
IG1
Sinon
Afficher(« le résultat du produit des deux nombre est : négatif »)
Fin
Fin
Corrigé de l'exercice 15
Algorithme signe somme
{donne le signe d’une somme de 2 nombres sans calculer la somme}
Variables prem, deuz, temp : Réel
Début
Afficher(« saisir 2 nombres : ») ;
Saisir(Prem,deuz) ;
Si (Prem = 0) et (deuz = 0) alors
Afficher(« le résultat de la somme des deux nombre est : nul »)
Sinon Si Prem > 0 et deuz > 0 alors
Afficher(« le résultat de la somme des deux nombre est : positif »)
Sinon Si Prem < 0 et deuz < 0 alors
Afficher(« le résultat de la somme des deux nombre est : négatif »)
Sinon Si Prem > 0 et deuz < 0 alors
Début
Temp  - deuz
Si Prem > Temp alors
Afficher(« le résultat de la somme des deux nombre est : positif »)
Sinon
Afficher(« le résultat de la somme des deux nombre est : négatif »)
Page 16 sur 18
Exercices d’algorithmique
IG1
Fin
Sinon Si Prem < 0 et deuz > 0 alors
Début
Temp  - Prem
Si deuz > Temp alors
Afficher(« le résultat de la somme des deux nombre est : positif »)
Sinon
Afficher(« le résultat de la somme des deux nombre est : négatif »)
Fin
Fin
Corrigé de l'exercice 16
Afficher(« saisir un nombre)
Saisir(N)
Si N < X alors
Afficher(N,X,Y)
Sinon Si N < Y alors
Afficher(X,N,Y)
Sinon Si N < Z alors
Afficher(X,Y,N)
Sinon Afficher(X,Y,Z)
Corrigé de l'exercice 17
Afficher(« saisir un nombre)
Saisir(N)
Si N < Z alors
Afficher(N,Z,Y)
Page 17 sur 18
Exercices d’algorithmique
IG1
Sinon Si N < Y alors
Afficher(Z,N,Y)
Sinon Si N < X alors
Afficher(Z,Y,N)
Sinon Afficher(Z,Y,X)
Corrigé de l'exercice 18
Afficher(« saisir un nombre)
Saisir(N)
Si N > Z alors
Afficher(Y,Z,N)
Sinon Si N > Y alors
Afficher(Y,N,Z)
Sinon Si N > X alors
Afficher(N,Y,Z)
Sinon Afficher(X,Y,Z)
Page 18 sur 18
Téléchargement