Université des Sciences et Technologies de Lille
Licence Miage - Programmation 1 - TP



Exercices : Les tableaux


On suppose défini le type Vecteur
   type Vecteur is array(Natural range <>) of Integer;


Exercice 1.   Écrire une procédure Min_Et_Max qui calcule le minimum et le maximum d'un vecteur. On veillera à faire le moins comparaisons possible.

Exercice 2.   Écrire une fonction Fusion qui prend en arguments deux vecteurs supposés bien triés et qui renvoie le vecteur obtenu en faisant l'union ordonnée.
5 8 10
        
   
4 5 8 9 10
         
4 9

Exercice 3.   Le triangle de Pascal permet de calculer les coefficients binomiaux. Mais son application nous concerne peu ici. Nous nous intéressons à sa construction, qui obéit aux règles suivantes. La première ligne du triangle est composée de deux éléments : 1 et 1. Pour tout n>1, la n ième ligne comporte ensuite n+1 éléments, définis par: Ainsi, les quatre premières lignes du triangle de Pascal sont
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Écrire une fonction Pascal qui prend en argument un entier positif n et rend comme résultat la n ième ligne du triangle de Pascal.

Exercice 4.   On dispose un vecteur T de taille n contenant tous les entiers de {0, ..., n}, sauf un. On veut déterminer quel est l'entier absent de T.

a. Donner un algorithme qui résoud le problème en temps linéaire, avec un espace mémoire annexe constant.

b. On suppose maintenant le tableau T est trié par valeur croissante. Montrer que le problème peut alors se résoudre par dichotomie. Quelle est alors la complexité ?

Exercice 5.   Un élément est majoritaire dans un vecteur s'il représente strictement plus de 50% des éléments. On veut écrire une procédure qui détermine si un vecteur contient un élément majoritaire, et dans ce cas précise lequel. Il existe pour cela un algorithme linéaire, qui procède en construisant des vecteurs auxiliaires, de plus en plus petits et dans lesquels se trouve toujours l'élément majoritaire.