Docsity
Docsity

Prépare tes examens
Prépare tes examens

Étudies grâce aux nombreuses ressources disponibles sur Docsity


Obtiens des points à télécharger
Obtiens des points à télécharger

Gagnz des points en aidant d'autres étudiants ou achete-les avec un plan Premium


Guides et conseils
Guides et conseils


Exercices sur l'algorithmique et la programmation - 1, Exercices de Application informatique

Exercices d’informatique sur l'algorithmique et la programmation - 1. Les principaux thèmes abordés sont les suivants: exercices.

Typologie: Exercices

2013/2014

Téléchargé le 03/03/2014

Christophe
Christophe 🇫🇷

4.1

(104)

760 documents

1 / 3

Toggle sidebar

Cette page n'est pas visible dans l'aperçu

Ne manques pas les parties importantes!

bg1
ENSEIRB 2009-2010 - epartement informatique - Premi`ere ann´ee
PG116 - Atelier algorithmique et programmation
Examen (session1) - dur´ee 1h20
Documents de cours/td autoris´es
Exercice 1 (7 points)
On consid`ere un tableau td’´el´ements de taille esize octet(s) chacun. Le dernier ´el´ement
significatif du tableau est suivi d’une sentinelle (ou but´ee). On suppose connue une fonction :
int sentinel(void e ) ;
qui renvoie 1 si la valeur `a l’adresse eest la sentinelle, et 0 sinon.
1. ´
Ecrire une fonction :
int co u nt ( void t , s i z e t e s i z e ) ;
qui calcule le nombre d’´el´ements dans le tableau. Vous utiliserez uniquement l’arithm´etique
de pointeurs : l’op´erateur [] est prohib´e.
2. Afin de rendre la fonction count en´erique, l’utilisateur doit pouvoir sp´ecifier comment
etecter la sentinelle qui marque la fin du tableau t. Comment doit ˆetre modifi´e le
prototype de la fonction count pour y parvenir ?
Exercice 2 (7 points)
Nous consid´erons la structure chaˆın´ee efinie dans la feuille de TD 2 et rappel´ee en an-
nexe A.
1. Quelle est l’utilit´e de la constante LINK_H ?
2. Que repr´esentent les types struct link et struct lelement ?
3. Nous consid´erons le TAD file muni des op´erations ci-dessous. Compl´eter le fichier
file.h en annexe B. `
A l’aide du type struct link mettre en œuvre le type struct file et
toutes les fonctions. Vous serez particuli`erement attentif `a la gestion de la emoire.
sort file
file_empty : -> file
file_is_empty : file -> bool
file_push : file * elmt -> file
file_pop : file -> file
file_top : file -> elmt
1
pf3

Aperçu partiel du texte

Télécharge Exercices sur l'algorithmique et la programmation - 1 et plus Exercices au format PDF de Application informatique sur Docsity uniquement!

ENSEIRB 2009-2010 - D´epartement informatique - Premi`ere ann´ee

PG116 - Atelier algorithmique et programmation

Examen (session1) - dur´ee 1h

Documents de cours/td autoris´es

Exercice 1 (7 points)

On consid`ere un tableau t d’´el´ements de taille esize octet(s) chacun. Le dernier ´el´ement

significatif du tableau est suivi d’une sentinelle (ou but´ee). On suppose connue une fonction :

int s e n t i n e l ( void ∗ e ) ;

qui renvoie 1 si la valeur `a l’adresse e est la sentinelle, et 0 sinon.

1. Ecrire une fonction :´

int count ( void ∗ t , s i z e t e s i z e ) ;

qui calcule le nombre d’´el´ements dans le tableau. Vous utiliserez uniquement l’arithm´etique

de pointeurs : l’op´erateur [] est prohib´e.

2. Afin de rendre la fonction count g´en´erique, l’utilisateur doit pouvoir sp´ecifier comment

d´etecter la sentinelle qui marque la fin du tableau t. Comment doit ˆetre modifi´e le

prototype de la fonction count pour y parvenir?

Exercice 2 (7 points)

Nous consid´erons la structure chaˆın´ee d´efinie dans la feuille de TD 2 et rappel´ee en an-

nexe A.

1. Quelle est l’utilit´e de la constante LINK_H?

2. Que repr´esentent les types struct link et struct lelement?

3. Nous consid´erons le TAD file muni des op´erations ci-dessous. Compl´eter le fichier

file.h en annexe B. A l’aide du type` struct link mettre en œuvre le type struct file et

toutes les fonctions. Vous serez particulierement attentifa la gestion de la m´emoire.

sort file

file_empty : -> file

file_is_empty : file -> bool

file_push : file * elmt -> file

file_pop : file -> file

file_top : file -> elmt

Exercice 3 (6 points)

Nous consid´erons un TAD bintree muni des op´erations suivantes :

sort bintree

bt_is_empty : bintree -> bool

bt_left : bintree -> bintree

bt_right : bintree -> bintree

Le fichier bintree.h en annexe C pr´esente une d´eclaration de ce TAD en langage C.

Nous consid´erons `a nouveau le TAD file de l’exercice pr´ec´edent. L’algorithme ci-dessous

calcule le nombre de nœuds dans l’arbre binaire t par un parcours en largeur d’abord.

integer count(bintree t)

integer c = 0

file f = file_push(file_empty(), t)

while (not file_is_empty(f)) do

bintree t’ = file_top(f);

f = file_pop(f)

if (not bt_is_empty(t’)) then

f = file_push(file_push(f, bt_left(t’)), bt_right(t’))

c = c+

endif

endwhile

return c

1. Mettre en œuvre l’algorithme count ci-dessus en langage C.

2. La complexit´e de l’algorithme count est O(n) o`u n est le nombre de nœuds dans t.

C’est `a dire que chaque nœud est visit´e un nombre constant de fois. Quelles fonctions

sur le type struct link (annexe A) faut-il utiliser pour mettre en œuvre les op´erations

push et pop du TAD file afin de garantir cette complexit´e?