Vous êtes sur la page 1sur 3

2019 – 2020

Université Tunis ElManar


Faculté des Sciences de Tunis
Département d’Informatique

Devoir Surveillé

Module : Algorithmique & Structures de Données Date : 29/10/2019


Section : MPI-1 Durée : 1h30
Documents : NON AUTORISÉS nb. Pages : 2

Exercice 1 :
Dans un tableau on appelle pic toute case encadrée par des valeurs strictement inférieures.

Exemple 1 :
Soit le tableau

0 3 5 2 4 0 7 7 7 6 2 5 0
1 2 3 4 5 6 7 8 9 10 11 12 13

Les cases (en gras) d’indices 3, 5 et 12 sont des pics.

Ecrire une procédure PIC qui, étant donné un tableau contenant N entiers positifs, détermine
les pics de ce tableau en mémorisant les indices et les valeurs de ces pics dans deux tableaux
distincts I et P.

Exemple 2 :
Pour le tableau de l’exemple 1, la procédure PIC déterminera les 2 tableaux suivants :

I 3 5 12

P 5 4 5

PIC( T :tab_entier ; N : entier ; Var I, P : tab_entier ; Var taille : entier )


Var k, m : entier
Debut
taille := 0
m := N-1
Pour k de 2 à m faire
Si T[k] > T[k-1] et T[k] > T[k+1]
Alors taille := taille + 1
I[taille] := k
P[taille] := T[k]
Fsi
Fpour
Fin
Exercice 2 :

Vous disposez d’un ensemble de pièces de monnaie. Une pièce est d’un type bien déterminé.
Vous avez au total 10 types de pièces. Chaque type de pièce est caractérisé par un code (un
caractère) unique et une valeur (la valeur de la pièce en millime). L’ensemble peut contenir
plusieurs pièces du même type.

Exemple : Un ensemble contenant 5 pièces de 100 millimes, 2 pièces de 10 millimes, 3


pièces de 20 millimes et 1 pièce de 1000 millimes.

On souhaite définir une structure de données permettant de représenter un tel ensemble.


On vous propose 2 structures :

a) Un tableau Tab1 = tableau[1..Max] de entier tel que


si E : Tab1 E[i] est la valeur d’une pièce de l’ensemble.
b) Un tableau Tab2 = tableau[1..10] de pièce
pièce = enreg
code : caractere
valeur : entier
nbre : entier
Fenreg
tel que si E : Tab2 E[i] contient toutes les informations relatives à la pièce de type i
(le code et la valeur de la pièce ainsi que le nombre de pièces de ce type).

1) Laquelle de ces 2 structures choisissez-vous pour la représentation de votre ensemble ?


Justifiez votre réponse.

La structure (b) est la plus appropriée. L’espace mémoire est plus réduit, on n’a pas besoin de
garder l’ensemble ordonné (toutes les pièces de même valeur successives) et les opérations
d’insertion et de suppression sont très simples à réaliser

Dans tout ce qui suit on considère des ensembles de pièces représentés selon la structure
proposée en (1).

2) Ecrire une procédure qui, étant donnés un ensemble de pièces E et une pièce P de type
donné, ajoute P à E.

Ajout_pièce( var E : Tab2 ; P : 1..10 )


Debut
E[P].nbre := E[P].nbre+1
Fin

3) Ecrire une procédure qui, étant donnés un ensemble de pièces E et une pièce P de type
donné appartenant à E, supprime P de E.

Supprime_pièce( var E : Tab2 ; P : 1..10 )


Debut
E[P].nbre := E[P].nbre-1
Fin
4) Ecrire une fonction qui, étant donné un ensemble de pièces E, calcule la valeur de la
somme représentée par E.

Pour l’exemple précédent la valeur de la somme représentée par l’ensemble est 1580
millimes.

Valeur(E : Tab2) : entier


Var v, i : entier
Debut
v := 0
pour i de 1 à 10 faire
v := v + E[i].valeur*E[i].nbre
fpour
Valeur := v
Fin

5) Ecrire une procédure qui, étant donnés deux ensembles E1 et E2, détermine l’ensemble
union E3 regroupant toutes les pièces de E1 et E2.

Union( E1, E2 : Tab2 ; var E3 : Tab2)

Var i : entier
Debut
pour i de 1 à 10 faire
E3[i].code := E1[i].code
E3[i].valeur := E1[i].valeur
E3[i].nbre := E1[i].nbre+E2[i].nbre
fpour
Fin