Vous êtes sur la page 1sur 4

Premier cycle

Jeudi 22 Juin 2006

I3 - Algorithmique et Langage C
Dur e : 3h00 e Documents autoris s : AUCUN (calculatrice comprise) e Remarques : Veuillez lire attentivement les questions avant de r pondre. e Le bar` me donn est un bar` me indicatif qui pourra evoluer lors de la correction. e e e Rendez une copie propre.

1
1.1

Multiplication egyptienne (3 points)


M thode e
Nous avons vu dans le dernier partiel que les egyptiens de lantiquit savaient : e additionner deux entiers strictement positifs, ` soustraire 1 a un entier strictement positif, multiplier par 1 et 2 tout entier strictement positif, diviser par 2 un entier strictement positif pair. Voici un exemple qui multiplie 14 par 13 en utilisant uniquement ces op rations : e 14 13 = 14 + 14 (13 - 1) = 14 + 14 12 = 14 + (14 2) (12 / 2) = 14 + 28 6 = 14 + (28 2) (6 / 2) = 14 + 56 3 = 14 + 56 + 56 (3 - 1) = 70 + 56 2 = 70 + (56 2) (2 / 2) = 70 + 112 1 = 70 + 112 = 182

1.2

Algorithme

Nous allons ecrire lalgorithme r cursif qui permet la multiplication de 2 naturels suivant cette e m thode : e 1. D terminer le ou les cas terminaux. D terminer le ou les cas g n raux. e e e e 2. Donner le corps de la fonction suivante en utilisant un algorithme r cursif : e fonction multiplicationEgyptienne (a,b : Naturel) : Naturel

Drapeau tricolore (3 points)


Soit le type enum r Couleur et le type TableauDeCouleur d nis de la facon suivante : ee e Type Couleur = {Bleu,Blanc,Rouge} Type TableauDeCouleur = Tableau[1..MAX] de Couleur

Dans le cadre de la coupe du monde de football, on se propose de d velopper une proc dure e e e (construireDrapeauFrancais) qui pour un tableau de couleurs (contenant nb el ments signi l ments de facon a ce quil y ait successivement tous les bleus en d but de tableau, ` catifs), trie les e e e puis tous les blancs enn tous les rouges. 1. Proposer une analyse descendante de ce probl` me. e 2. Donner le corps de la proc dure construireDrapeauFrancais et des fonctions ou proc dures e e de votre analyse.

Les pointeurs en C (3 points)


Soit p un pointeur qui pointe sur un tableau t :

i n t t [ ] = {12 , 23 , 43 , 45 , 56 , 67 , 79 , 89 , 90}; i n t p ; p = t; Quelles valeurs ou adresses fournissent les expressions suivantes : 1. p+(*p-10) 2. *(p+2) 3. *p+2 4. t+3 5. *(&(t[4])-3) 6. *(p+*(p+8)-t[7])

Encore un peu de C (5 points)

Dans un espace orthonorm a deux dimensions, on d nit un carr par les coordonn es de son e` e e e point bas gauche et par la longueur dun cot . e 1. D nir un type Carre qui permet de stocker les informations d nissant un carr . e e e 2. On consid` re la relation dinclusion entre les carr s suivante : un carr C2 est inclus dans un e e e ` carr C1 si, graphiquement, le carr C2 est a lint rieur du carr C1. e e e e (a) Ecrire une fonction int estInclusDans(Carre C2, Carre C1) qui retourne 1 si C2 est inclus dans C1, 0 sinon. (b) Ecrire une fonction qui, pour un tableau de carr s, permet de trouver lindice dans le e tableau, du carr qui inclut le plus de carr s. e e

Et pour nir un peu dalgo (6 points)

On se propose dans cet exercice dutiliser une structure de donn es qui ordonne nativement des e e e el ments. Cette structure de donn es est compos e de 4 el ments : e e e 1. un tableau permettant de stocker les el ments (lesElements), 2

2. un tableau de naturels, associ au premier, qui permet de connatre lindice de l l ment qui suit e ee un autre avec la valeur -1 sil ny en a pas (suivant), 3. un naturel qui indique le nombre d l ments (nbElements), ee e 4. un naturel qui indique lindice du premier el ment ( indicePremierElement). Pour illustrer cette structure nous allons consid rer que nous voulons stocker des noms danie maux. Les ajouts successifs de Lion, Gazelle, Z` bre, Chien et Lapin donnerait la structure e suivante :
1 2 3 4 5 6 7 MAX lesElements Lion Gazelle Zbre Chien Lapin suivant 3 5 -1 2 1 indicePremierElement 4 nbElements 5

e ` On voit bien que le premier el ment est celui qui est a lindice 4 (valeur dindicePremierElement) ` et cest le Chien (valeur de lesElements[4]). Il est suivi de l l ment se trouvant a lindice ee 2 (valeur de suivant[4]), cest la Gazelle (valeur de lesElements[2]), etc. Le dernier e el ment est bien Z` bre (valeur de lesElements[3]) car il ne poss` de pas d l ment suivant e e ee ` (valeur de suivant[3] a -1). Lajout de l l ment Chat dans cet exemple modiera la structure de la facon suivante : ee
1 2 3 4 5 6 7 MAX lesElements Lion Gazelle Zbre Chien Lapin Chat suivant 3 5 -1 2 1 4 indicePremierElement 6 nbElements 6

Enn, lajout de l l ment Loup modiera la structure de la facon suivante : ee


1 2 3 4 5 6 7 MAX lesElements Lion Gazelle Zbre Chien Lapin Chat Loup suivant 7 5 -1 2 1 4 3 indicePremierElement 6 nbElements 7

On repr sente cette structure de donn es a laide du type suivant : e e ` Type Liste = Structure lesElements : Tableau[1..MAX] de Chane de caract` res e suivant : Tableau[1..MAX] de Naturel indicePremierElement : Naturel nbElements : Naturel nstructure

5.1

Initialiser

e Ecrire le corps de la proc dure suivante qui initialise (aucun el ment) une variable de type Liste : e proc dure initialiser ( Entr e/Sortie l : Liste ) e e

5.2

Parcourir

e Ecrire le corps de la proc dure suivante qui afche dans lordre les el ments contenus dans une e variable de type Liste : proc dure afcher ( Entr e l : Liste ) e e

5.3
5.3.1

Ajouter
Un autre exemple

En reprenant lexemple donn dans l nonc , apr` s lajout de Loup, proposez le r sultat de e e e e e lajout de Pie. 5.3.2 Lalgorithme

Ecrire le corps de la proc dure suivante qui ajoute un nom danimal dans une liste : e proc dure ajouter ( Entr e/Sortie l : Liste , Entr e nom : Chane de caract` res ) e e e e Dans ce cas on consid` re : e e quil y a assez de place pour stocker le nouvel el ment que lon poss` de la fonction estInferieureOuEgale qui permet de comparer deux chanes e de caract` res : e fonction estInferieureOuEgale (chaine1, chaine2 : Chane de caract` res) : Bool en e e