Vous êtes sur la page 1sur 5

ALGORITHMIQUE ET STRUCTURES DE DONNEES

TD N°3 : LES TABLEAUX

Niveau : 1ère année IM Année universitaire : 2017/2018

A/ Les Tableaux Unidirectionnels :


Exercice 1 :
Ecrire un algorithme qui permet de :
• Remplir un tableau de N entiers ;
• Chercher la valeur maximale et valeur minimale de ce tableau ;
• Afficher tous les nombres inférieurs à la moyenne des éléments du tableau ;
• Afficher l’élément le plus proche de la moyenne.
Exercice 2 :
Ecrire un algorithme qui calcule le produit scalaire de deux vecteurs d'entiers U et V (de même
dimension).

Exercice 3 :
Ecrire un algorithme qui permet de :
• Remplir un tableau de N entiers ;
• Afficher les éléments de ce tableau dans l’ordre inverse.
Exercice 4 :
Ecrire un algorithme qui permet de vérifier si les éléments d’un tableau sont dans l’ordre
croissant ou non.
Exercice 5 : (Insérer une valeur dans un tableau trié)
Un tableau A de dimension N+1 contient N valeurs entières triées par ordre croissant; la (N+1)ième
valeur est indéfinie. Insérer une valeur VAL donnée au clavier dans le tableau A de manière à obtenir
un tableau de N+1 valeurs triées.

Exercice 6 : (éclatement d’un tableau)

1/5
Ecrire un algorithme éclatement qui permet d’éclater un vecteur d’entier VE en deux :
• Un vecteur VP contenant les entiers pairs du tableau VE ;
• Un vecteur VI contenant les entiers impairs.

Exercice 7 :
Ecrire un algorithme qui permet de :
• Remplir un tableau TAB ordonné de N entiers dans l’ordre croissant ;
• Vérifier l’existence d’une valeur VAL donnée dans ce tableau et afficher la position de
VAL si elle se trouve dans le tableau, sinon afficher un message correspondant. La
valeur POS qui est utilisée pour mémoriser la position de la valeur dans le tableau,
aura la valeur -1 aussi longtemps que VAL n'a pas été trouvée.
Implémenter deux versions:

a) La recherche séquentielle : Comparer successivement les valeurs du tableau avec la valeur donnée.

b) La recherche dichotomique ('recherche binaire', 'binary search') : Comparer le nombre recherché à


la valeur au milieu du tableau,

- s'il y a égalité ou si le tableau est épuisé, arrêter le traitement avec un message correspondant.

- si la valeur recherchée précède la valeur actuelle du tableau, continuer la recherche dans le demi-
tableau à gauche de la position actuelle.

- si la valeur recherchée suit la valeur actuelle du tableau, continuer la recherche dans le demi-
tableau à droite de la position actuelle.

Ecrire le algorithme pour le cas où le tableau A est trié par ordre croissant.

Question: Quel est l'avantage de la recherche dichotomique? Expliquer brièvement.

Exercice 8 : (représentation de polynômes)


Deux polynômes P(x) et Q(x) sont représentés par des tableaux. Construire sous forme de
tableaux les polynômes suivants :
• (P+Q)(x) = P(x) + Q(x),
• (P*Q)(x) = P(x) * Q(x),
• P’(x) = polynôme dérivé de P(x)

2/5
Exercice 9 : (fusion de deux tableaux triés)
Problème: On dispose de deux tableaux A et B (de dimensions respectives N et M), triés par ordre
croissant. Fusionner les éléments de A et B dans un troisième tableau FUS trié par ordre croissant.

Méthode: Utiliser trois indices IA, IB et IFUS. Comparer A[IA] et B[IB]; remplacer FUS[IFUS] par le plus
petit des deux éléments; avancer dans le tableau FUS et dans le tableau qui a contribué son élément.
Lorsque l'un des deux tableaux A ou B est épuisé, il suffit de recopier les éléments restants de l'autre
tableau dans le tableau FUS.

Exercice 10 : (Drapeau Hollandais)


Les éléments d’un tableau sont soit bleus, blancs ou rouges. Il s’agit de construire un tableau
ayant les mêmes éléments mais rangés par couleur (bleus, blancs puis rouges)
Remarque : on n’utilisera aucun tableau intermédiaire et le rangement s’effectuera en un
seul passage
Exercice 11 : (méli-mélo avec deux vecteurs)
Ecrire un programme C qui permet de :

- Lire un entier impair N supérieur strictement à 1.


- Définir deux tableaux d’entiers V1 et V2 de taille N.
- Saisir les éléments de V1.
- Transférer les éléments du vecteur V1 dans V2 selon le principe suivant :
Les éléments de rang impair de V1 sont rangés dans V2 en ordre inverse en commençant par la fin
de V2, et les éléments de rang pair de V1 sont rangés dans V2 dans le même ordre en
commençant par le début de V2 (voir exemple).
Exemple d’exécution : Pour N=7

1 2 3 4 5 6 7 1 2 3 4 5 6 7
V1
-1 2 7 1 3 1 -2 2 1 1 -2 3 7 -1
V2

3/5
B/ Les Tableaux Bidirectionnels :
Exercice 12 :
Ecrire un algorithme qui permet de faire la somme de deux matrices M1 et M2 de taille (n,m).
Exercice 13 :
Ecrire un algorithme qui permet de faire le produit d’une matrice M1 de taille (n,m) par une
matrice M2 de taille (m,k). Avec M matrice finale de taille (n,k) et M= M1*M2.
Exercice 14 :
Ecrire un algorithme qui permet de calculer les deux vecteurs suivants :
• Ligne : contenant la somme des éléments par lignes d’une matrice,
• Colonne : contenant la somme des éléments par colonne de cette matrice.
1 2 3
Exemple : M = ligne = 6 21 8
6 7 8
colonne = 8 14 13

Exercice 15 :
Quand les éléments au dessus ou en dessous de la diagonale dans une matrice carrée sont
égaux à 0, la matrice est dite triangulaire :

A11 A1n A11

A22 A22
0
0
matrice triangulaire supérieur matrice triangulaire inférieur

Soit M une matrice triangulaire inférieure ayant n lignes, Quand n est très grand, on remplace
les éléments non nuls de M par un tableau T[1..x].
1. Déterminer x,
2. trouver une relation entre i et j pou les éléments nuls de M,
3. Ecrire un algorithme qui permet de construire la matrice M à partir du tableau T.

4/5
Exercice 16 :
Soit un vecteur V de n éléments entiers donnés : V = [v1,v2, … vn]
Ecrire un algorithme qui permet de construire une matrice carrée M (n,n) de la forme
suivante :

v1 v2 …………vn-1 vn

M= v2 v3 ………… vn v1

5/5

Vous aimerez peut-être aussi