• Aucun résultat trouvé

Travaux Dirig´es d’algorithmique n

N/A
N/A
Protected

Academic year: 2022

Partager "Travaux Dirig´es d’algorithmique n"

Copied!
2
0
0

Texte intégral

(1)

Travaux Dirig´ es d’algorithmique n

o

9

Cours d’Informatique de Deuxi`eme Ann´ee

—L2.1—

Manipulation de bits et tableaux de listes

Dans ce TD, nous apprenons `a manipuler des bits en C, en utilisant les op´erateurs logiques et les masques. Nous concluerons par un exercice visant `a stocker des entiers de fa¸con efficace dans des tableaux de listes chaˆın´ees.

xExercice 1.Manipulation de bits

Nous souhaitons ´ecrire des fonctions de base pour manipuler des bits. En C, on use des op´erateurs logiques classiques (&, |, ^, ∼, «, ») et des masques pour ce genre d’op´erations.

ATTENTION : nous utilisons des entiers, et nous indicerons le bit de poids fort par 31, et celui de poids faible par 0.

Vous ´ecrirez les fonctions suivantes :

– strToBin : on passe a cette fonction une chaˆıne de caract`eres de longueur maximum 32. Elle v´erifie que cette chaˆıne n’est compos´ee que de 0 et de 1, puis renvoie l’entier dont la repr´esentation binaire correspond `a la chaˆıne saisie.

– afficheBin : elle re¸coit un entier et l’affiche en repr´esentation binaire. ´Ecrivez une version it´erative et une version r´ecursive de cette fonction.

– testeBit: permet de savoir la valeur d’un des bits d’un entier. Elle renvoie 0 ou 1.

– allumeBit : positionne un bit donn´e d’un entier `a 1.

– eteintBit : positionne un bit donn´e d’un entier `a 0.

– estPalindrome: renvoie VRAI ou FAUX selon que l’entier pass´e en param`etre a une repr´esentation binaire palindromique ou non.

xExercice 2. Tableaux de listes chaˆın´ees

Le but de cet exercice est de stocker des entiers dans des listes chaˆın´ees, en manipulant des cellules simples contenant unint.

1. D´efinissez un type Cellule ad´equat.

2. ´Ecrivez rapidement les fonctions ajouteEntieretchercheEntier. Calculez leur com- plexit´e.

1

(2)

3. Par quel moyen pourriez-vous acc´el´erer la recherche sans augmenter la complexit´e de l’ajout ?

4. Dans le cas du stockage de nombres binaires, quelle fonction de r´epartition choisir ? 5. La fonction de r´epartition est-elle importante ? Sur quel(s) crit`ere(s) doit-t’elle ˆetre

choisie ? Peut-on imaginer une optimisation similaire sur le stockage de chaˆınes de ca- ract`eres ?

2

Références

Documents relatifs

(b) R´ epondez aux mˆ emes questions que dans l’exercice 1 mais pour les listes chaˆın´ ees doublement.. 3: Liste chaˆ ın´

On note X la variable al´eatoire qui, `a chaque pelle pr´elev´ee au hasard dans la flotte, associe le nombre de m 3 de mat´eriaux extraits pendant la premi`ere heure du chantier.

– Liste doublement chaˆ ın´ ee : en plus du champ successeur, chaque ´ el´ ement contient un champ pr´ ed´ ecesseur qui est un pointeur sur l’´ el´ ement pr´ ec´ edent dans

´ Ecrivez des fonctions r´ ealisant : l’union, l’intersection, la diff´ erence, la diff´ erence sym´ etrique et le produit cart´ esien de

Nous nous int´ eressons maintenant aux listes doublement chaˆın´ ees, c’est-` a-dire chaˆın´ ees dans les deux sens : en plus du champ successeur, chaque ´ el´ ement contient

On considère une liste d’ouvrages LOuvrages où chaque élément de la liste contient un Livre ; caractérisé par son code (un entier), son titre (une chaîne de caractères), et le

Testez d'abord sur des listes courtes construites avec les méthodes vide et ajoutT. d) Testez ensuite sur des listes longues générées avec la méthode creerAleat. Le

Question 2 Ecrivez (en modifiant l´eg`erement votre fonction pr´ec´edente) la fonction decomp tab qui remplit un tableau avec les n premiers coefficients de la d´ecomposition