Série d’exercices : les algorithmes récurrents Proposée par : Mme Ben Attia Imen Lycée secondaire Aljawhara – Sousse -
Classe : 4SI
1ère partie : les suites EXERCICE N°1 : On considère deux suites (U) et (V) définies à partir de : U1 = 1 U2 = 2 Ui = Ui-1 + Ui-2
(i ≥ 3)
Vi = Ui / Ui-1 (i ≥ 2) La suite (Vn) tend vers une limite, appelée nombre d'or. On suppose que le nième terme de la suite ( V), soit Vn, donne une valeur approchée du nombre d'or avec une précision E, dès que |V n – Vn-1| < E. Ecrire un programme permettant de déterminer le terme Vn à 10-4 près et son rang.
EXERCICE N°2 : On désire saisir un tableau de n entiers puis vérifier si ces éléments forment une suite arithmétique. Sachant que si U est une suite arithmétique alors Un= Un-1 + a.
EXERCICE N°3 : On se donne un entier non nul U0 et on se propose de construire la séquence d’entiers ( Un) définie par : Un+1 est égale à la somme des carrés des chiffres de U i : Alors Ui+1=4²+2²+3² =29 Exemple : si Ui=423 On admet que la séquence est :
Soit cyclique, C'est-à-dire : Il existe i,j avec i+1=0 tel que quelque soit j>i U j=Ui=1 (S) (elle sera stationnaire à partie de l’apparition de 1 dans la séquence.) 1) Calculer Calculer les 15 15 premiers premiers éléments éléments de de Un dans dans les cas suivant suivantss : U0=12 u0=295 U0=1115 2) Ecrire Ecrire un algori algorithm thmee de la procéd procédure ure INIT qui initiali initialise se à « zéro zéro », tous les éléments éléments d’un tablea tableau u T unidimensionnel (de T[0] à T[99]) NB : Ce tableau servira par la suite à stocker les premiers éléments de la séquence à construire ( T[i] =Ui) 3) Ecrire un algorithme de la procédure saisie permettant de saisir U0 >0 4) Ecrire un algorith algorithme me d’une fonction fonction CARREEC CARREECHIF HIF (E) permettant permettant de calculer calculer la somme des carrés carrés des chiffres de E. 5) Ecrire Ecrire un algorith algorithme me d’une foncti fonction on cherche cherche (T,v,k) (T,v,k) qui cherche cherche une valeur valeur v dans les k premie premiers rs éléments du tableau T (T[0]…T[k-1]) Cette fonction renvoie comme résultat Soit la première position de v dans T Soit la valeur -1 quand v n’y est pas 6) En utilis utilisant ant les fonctio fonctions ns et procéd procédure uress précéd précédent entes, es, écrire un algori algorithm thmee du programm programmee princi principal pal intitulé INSPID qui fait les traitements suivants sur l’entier U0 Si la séquence est stationnaire alors il affiche la position i vérifiant (S) ainsi que la séquence U0,U1,…,Ui Si la séquence est cyclique alors affiche les premiers i et j vérifiant (C) ainsi que la séquence : U0,U1, …,Ui,…..U j • •
- Page 1 sur 4 -
2ème partie : algorithmes récurrents sur les matrices EXERCICE N°1 : Donner un programme qui permet de rechercher dans une matrice donnée A de N lignes et de M colonnes les éléments qui sont à la fois un maximum sur leur ligne et un minimum sur leur colonne. Ces éléments sont appelés des points cols. Afficher les positions et les valeurs de tous les points cols trouvés.
Exemples: Les éléments soulignés sont des points cols: 18340
4586
35677
127
67270
3893
42289
456
3493
63297
789
Méthode: Etablir deux matrices d'aide MAX et MIN de même dimensions que A, telles que: 1 si A[i,j] est un maximum sur la ligne i MAX[i,j] = 0 sinon 1 si A[i,j] est un minimum sur la colonne j MIN[i,j] = 0 sinon Les points cols sont ceux qui vérifient l’égalité suivante : MMAX[i,j] = MMIN[i,j]=1
EXERCICE N°2 : Proposer une autre p méthode pour remplir le triangle de pascal en utilisant la fonction récursive combinaison qui calcul le nombre Cn qui représente un cœfficient du polynôme (a+b) n sachant que :
C
n,p
=Cn-1,p +Cn-1,p-1
avec
C
n,n
=1
C
n,0
C
=1
n,n-1
=1
EXERCICE N°3 : Proposer un programme qui permet de : calculer la somme des éléments de la 1ère diagonale d’une matrice carrée.
a-
calculer la somme des éléments de la 2ème diagonale d’une matrice carrée.
b-
3
10
5
14
3
10
5
14
1
20
12
10
1
20
12
10
4
-2
6
1
4
-2
6
1
4
3
1
0
4
3
1
0
c- calculer la somme des éléments des 2 diagonales d’une matrice carrée.
12. 5
29
48
1
9
-10
16
3
14
17
0.2 5
-2
18
56
82
17.5
d- Donner une solution récursive au module permettant de calculer la somme des éléments d’une matrice.
EXERCICE N°4 : - Page 2 sur 4 -
Donner un programme qui permet de calculer le produit de chaque ligne d'une matrice carrée de N entiers. (En mode itératif et en mode récursif)
EXERCICE N°5 : Proposer une analyse du problème permettant de trier une matrice dans un ordre croissant en utilisant : •
le tri par sélection récursif
•
le tri par insertion récursif
•
le tri à bulle récursif
3ème partie : algorithmes récurrents sur les chaînes Exercice N°1 : Proposer un programme permettant d’évaluer un nombre écrit en chiffre romains sachant que les chiffres romains s’écrivent comme suit: M = 1000 D = 500 C = 100 L = 50 X = 10 V=5 I=1 On constate que les nombres s'arrêtaient aux milliers; cela montre le progrès des mathématiques depuis le temps des romains. • •
•
•
•
•
•
•
•
•
•
•
• • • • •
L'écriture des nombres romains 1 s'écrit I. 2 s'écrit II. 3 s'écrit III. 4 s'écrit IV. 5 s'écrit V. 6 s'écrit VI. 7 s'écrit VII. 8 s'écrit VIII. 9 s'écrit IX. 10 s'écrit X.
Exercice N°2: Ecrire un programme qui permet la compression d’une chaîne (CODEC) (compresser c’est remplacer les caractères semblables qui sont successifs par leur nombre de répétition suivi du caractère qui se répète. Proposer une solution pour la décompression d’une chaîne.
Exercice N°3: Ecrire un programme qui permet de supprimer les espaces superflus dans une chaîne
Exercice N°4: Ecrire un programme qui saisit une chaîne de caractères et l'affiche sous la forme d'un triangle comme indiqué ci-dessous.
Exemple : Si la chaîne saisie est "INTERNET", on aura : I IN INT INTE INTER INTERN INTERNE INTERNET - Page 3 sur 4 -
Pour chaque exercice faire une analyse modulaire suivie des algorithmes correspondants puis traduire la solution en pascal.
- Page 4 sur 4 -