TD 1 : Tableaux et Structures
Exercice 1 :
a) Cet algorithme calcule et stocke tous les carrés des nombres entiers de 1 à 5 dans un
tableau, puis les affiches.
i nb
1 [1]
2 [1|4]
3 [1|4|9]
4 [1|4|9|16]
5 [1|4|9|16|25]
1 [1|4|9|16|25]
2 [1|4|9|16|25]
3 [1|4|9|16|25]
4 [1|4|9|16|25]
5 [1|4|9|16|25]
Affiche :
1
4
9
16
25
b) On peut simplifier l’affichage pour éviter de devoir faire deux boucles :
Déclarations : nb : tableau [1 … 5] d’entiers ; i : entier
Début
Pour i de 1 à 5 faire
nb[i] i*i
Ecrire(nb[i])
finPour
Fin
c) Cette algorithme calcule les 6 premiers termes d’une suite où U1 = 1 et Un = Un-1 + 2
et ensuite les affiches.
k t i
/ [1] /
2 [1|3] /
3 [1|3|5] /
4 [1|3|5|7] /
5 [1|3|5|7|9] /
6 [1|3|5|7|9|11] /
/ [1|3|5|7|9|11] 1
/ [1|3|5|7|9|11] 2
/ [1|3|5|7|9|11] 3
/ [1|3|5|7|9|11] 4
/ [1|3|5|7|9|11] 5
/ [1|3|5|7|9|11] 6
Affiche :
1
3
5
7
11
Oui on peut le simplifier, encore une fois on a besoin que d’une boucle puisqu’on peut
mettre le Ecrire de la deuxième boucle dans la première juste après l’affectation de t[k].
Ce qui en plus enlève une variable pas nécessaire ( i ). Il ne faut pas oublier d’ajouter
Ecrire(t[1]) juste avant le début de la boucle sinon ça n’affichera pas le premier terme de
la suite.
d) Cette algorithme calcule les 7 premiers termes d’une suite où U1 = 0 et U2 = 1 et Un =
Un-1 + Un-2 et ensuite les affiches. On reconnait la suite de Fibonacci
i suite
/ [0]
/ [0|1]
3 [0|1|1]
4 [0|1|1|2]
5 [0|1|1|2|3]
6 [0|1|1|2|3|5]
7 [0|1|1|2|3|5|8]
1 [0|1|1|2|3|5|8]
2 [0|1|1|2|3|5|8]
3 [0|1|1|2|3|5|8]
4 [0|1|1|2|3|5|8]
5 [0|1|1|2|3|5|8]
6 [0|1|1|2|3|5|8]
7 [0|1|1|2|3|5|8]
Exercice 2 :
Algorithme de Maximum
Description : Parmi 10 nombres donnés, l’algorithme trouve le plus grand nombre et sa
position dans la liste.
Déclarations : i_maxi, i, maxi, n : entiers ; nombres : tableau[1 … 10] d’entiers
Début
Lire(n)
nombres[1] n
i_maxi 1
maxi nombres[1]
Pour i 2 à 10 faire
Lire(n)
nombres[i] n
Si n > maxi
alors
maxi n
i_maxi i
finSi
finPour
Ecrire("Nombre maximum : ", maxi, " à la position : ", i_maxi)
Fin
Exercice 3 :
Algorithme de somme de deux tableaux
Description : Crée à partir de deux tableaux donnés un autre tableau qui est la somme des
éléments des deux tableaux de départs.
Déclarations : t1, t2, t3 : tableau[1 … 8] d’entiers ; i : entier
Début
t1 [4|8|7|9|1|5|4|6]
t2 [7|6|5|2|1|3|7|4]
Pour i 1 à 8
Faire
t3[i] t1[i] + t2[i]
finPour
Fin
Exercice 4 :
(Ici, on dit que N = 10)
Algorithme de transfert des éléments positifs et des éléments négatifs d’un tableau.
Description : Transfert les éléments positifs d’un tableau T dans un tableau TPOS et transfère
les éléments négatifs ou nuls de T dans un tableau TNEG
Déclarations : i, n : entier ; TNEG, TPOS, T : tableau[1 … 10] d’entiers
Début
Pour i 1 à 10
Faire
Lire(n)
T[i] n
Si n > 0
Alors
TPOS[i] n
Sinon
TNEG[i] n
finSi
finPour
Fin
Exercice 5 :
(Ici, N = 10)
Algorithme de produit scalaire de 2 vecteurs
Description : Calcul le produit scalaire de deux tableaux de nombres entiers.
Déclarations : U, V : tableau[1 à 10] d’entiers ; i, PS, n : entiers
Début
Pour i 1 à 10
Faire
Lire(n)
U[i] n
finPour
Pour i 1 à 10
Faire
Lire(n)
V[i] n
finPour
Pour i 1 à 10
Faire
PS PS + U[i]*V[i]
finPour
Fin
Exercice 6 :
(Ici, on dit que N = 10)
Algorithme Inversion des éléments d’un tableau
Description : Inverse l’ordre des éléments d’un tableau donné.
Déclarations : n, i : entiers, TAB, TAB_temp : tableau[1 … 10] d’entiers.
Début
Pour i 1 à 10
Faire
Lire(n)
TAB[i] n
finPour
Pour i 1 à 10
Faire
TAB_temp[11-i] TAB[i]
finPour
TAB TAB_temp
Fin
Exercice 7 :
Algorithme de statistiques
Description : Calcul des statistiques à partir
Déclarations : n, i, j, inferieures, superieures : entiers ; valeurs : tableau[1 … 10] d’entiers ;
moyenne : réel
Début
Lire(n)
Si n > 0
Alors
valeurs[1] n
moyenne n
i1
Tant que i < 10 ET n > 0
Faire
Lire(n)
Si n > 0
Alors
moyenne moyenne + n
ii+1
valeurs[i] n
finSi
finTantQue
moyenne moyenne / i
Pour j 1 à i
Faire
Si valeurs[j] > moyenne
Alors
superieures superieures + 1
Sinon
inferieures inferieures + 1
finSi
Ecrire(« Moyenne : », moyenne)
Ecrire(« Notes strictement supérieures à la moyenne : », superieures)
Ecrire(« Notes inférieures ou égales à la moyenne : », inferieures)
Sinon
Ecrire(« Erreur : au moins 1 valeur positive est nécessaire. »)
finSi
Fin
Exercice 8 :
Algorithme addition de matrices
Descriptions : Fait la somme de deux matrices données
Déclarations : M1, M2, M3 : tableaux[1 … 3][1 … 3] d’entiers ; i, j : entiers
Début
Pour j 1 à 3
Faire
Pour i 1 à 3
Faire
Lire(M1[i][j])
Lire(M2[i][j])
M3[i][j] M1[i][j]) + M2[i][j])
finPour
Ecrire(M3[1][j], M3[2][j], M3[3][j])
finPour
Fin
Exercice 9 :
Algorithme Opérations Complexes
Description : Effectue différentes opérations entre deux nombres complexes
Déclarations : Type Comp = Structure
p_reele : réel
p_image : réel
FinStructure ;
comp1, comp2, comp3 : Comp
Début
# Addition
comp3.p_reele comp1.p_reele + comp2.p_reele
comp3.p_image comp1.p_image + comp2.p_image
# Soustraction
comp3.p_reele comp1.p_reele - comp2.p_reele
comp3.p_image comp1.p_image - comp2.p_image
# Multiplication
comp3.p_reele comp1.p_reele*comp2.p_reele - comp1.p_image*comp2.p_image
comp3.p_image comp1.p_reele*comp2.p_image + comp1.p_image*comp2.p_reele
# Division
comp3.p_reele (comp1.p_reele*comp2.p_reele + comp1.p_image*comp2.p_image) /
(comp2.p_reele**2 + comp2.p_image**2)
comp3.p_image (c comp1.p_image*comp2.p_reele - comp1.p_reele*comp2.p_image) /
(comp2.p_reele**2 + comp2.p_image**2)
Fin