Académique Documents
Professionnel Documents
Culture Documents
Algorithmique avancée
et
Programmation C
Durée : 3h00
Documents autorisés : AUCUN
Remarques :
— Veuillez lire attentivement les questions avant de répondre ;
— Pour chaque section comportant des questions, il est indiqué, entre parenthèses, le nombre de
compétences évaluées par ces questions.
1 QCM (4 compétences)
Répondez au qcm ci joint (à rendre avec votre copie). La note de chaque question peut varier de −1 à
+1.
Soit B le nombre de bonnes réponses à une question et soit M le nombre de mauvaises réponses à cette
même question (B + M est égale au nombre de réponses à la question). Chaque bonne réponse cochée
rapporte 1/B points et chaque mauvaise réponse −1/M points pour la compétence évaluée par la question.
B D
A C G
E F
1
2. ACFGEDB
3. ABCDEFG
Sachant que :
— chaque nœud traité a donné lieu à son ajout (c’est-à-dire en fin de liste) à la liste initialement vide.
Votre justification précisera à chaque étape de l’algorithme identifié, l’état de la collection, à préciser,
qui est utilisée ;
— lorsque, à un moment donné de l’exécution de l’algorithme, plusieurs nœuds peuvent être ajoutés à la
collection 1 , le premier nœud ajouté est celui dont l’identifiant est le plus petit (au sens alphabétique).
0,0
largeur-1,hauteur-1
2
3.3 Utilisation (6 compétences)
1. Proposez l’algorithme de la procédure suivante qui remplit, d’une certaine couleur, une zone rectan-
gulaire donnée :
— procédure remplir (E/S im : ImageNB, E x,y,larg,haut : Naturel, c : Couleur)
⌊précondition(s) x+larg-1<largeur(im), y+haut-1<hauteur(im)
2. Proposez l’algorithme de la fonction suivante qui permet de savoir si tous les pixels d’une zone d’une
image sont tous de la même couleur :
— fonction memeCouleur (im : ImageNB, x,y,larg,haut : Naturel) : Booleen
⌊précondition(s) x+larg-1<largeur(im), y+haut-1<hauteur(im)
3
1.1
b
1.3.1
1
b
b
NO
2
1.3.3 1.3.4
1.3.1 1.3.2
1.1
NE
1.4
1.2
b
SO
2
3
SE
4
4
3.6 Conception préliminaire (1 compétence)
Donnez les signatures des fonctions et procédures du TAD QuadTree.
On suppose posséder les fonctions suivantes qui calculent pour une zone donnée (définie à l’aide du
point x,y en haut à gauche, de sa largeur et de sa hauteur) les quatre zones définies précédemment (les
valeurs retournées correspondent aux coordonnées du point en haut à gauche, de la largeur et de la hauteur
de la zone calculée) :
— fonction zoneNO (im : ImageNB, x,y,larg,haut : Naturel) : Naturel,Naturel,Naturel,Naturel
— fonction zoneNE (im : ImageNB, x,y,larg,haut : Naturel) : Naturel,Naturel,Naturel,Naturel
— fonction zoneSO (im : ImageNB, x,y,larg,haut : Naturel) : Naturel,Naturel,Naturel,Naturel
— fonction zoneSE (im : ImageNB, x,y,larg,haut : Naturel) : Naturel,Naturel,Naturel,Naturel
Donnez l’algorithme de la fonction suivante qui calcule le QuadTree d’une image (il se peut que vous
ayez besoin d’une fonction privée) :
— fonction imageNBEnQuadTree (im : ImageNB) : QuadTree
Donnez l’algorithme de la fonction suivante qui calcule l’image décrite par un QuadTree (encore une
fois, il se peut que vous ayez besoin d’une fonction privée) :
— fonction QuadTreeEnImageNB (qt : QuadTree, largeur, hauteur : Naturel) : ImageNB
La chaine de caractères calculée par la question précédente est une représentation orientée caractère
d’une image. Il serait possible de réduire la consommation mémoire de cette représentation en utilisant
une représentation orientée binaire (en utilisant les bits des octets pour représenter l’information). Si la
chaı̂ne de caractères est de longueur l, combien faut il d’octets pour stocker une représentation binaire
plus courte ?