• Aucun résultat trouvé

Pratique de la programmation et projet TP 11 : Pointeurs de pointeurs, pointeurs de fonctions et joyeuset´es aff´erentes

N/A
N/A
Protected

Academic year: 2022

Partager "Pratique de la programmation et projet TP 11 : Pointeurs de pointeurs, pointeurs de fonctions et joyeuset´es aff´erentes"

Copied!
1
0
0

Texte intégral

(1)

Pratique de la programmation et projet

TP 11 : Pointeurs de pointeurs, pointeurs de fonctions et joyeuset´es aff´erentes

Fr´ ed´ eric Vivien

Pointeurs de pointeurs

Ecrivez une fonction d’allocation de pointeurs sur entiers, qui prenne en entr´´ ee (entre autres) la taille `a allouer, et qui renvoie une valeur de diagnostique (0 si l’allocation s’est bien pass´ee, et -1 sinon).

Dans la fonctionmainde votre programme, d´eclarez un pointeur sur entier (initialis´e `a NULL), et allouez- le au moyen de la fonction pr´ec´edemment ´ecrite. V´erifiez le r´esultat.

Pointeurs de fonction

1. ´Ecrivez (ou r´ecup´erez d’un TP pr´ec´edent) une fonction de tri croissant d’une liste d’entiers.

2. `A partir de la fonction pr´ec´edente, ´ecrivez une fonction de tri d’une liste d’entiers, la fonction de comparaison ´etant pass´ee en argument.

3. ´Ecrivez deux fonctions de comparaison de deux entiers, chacune de ces fonctions prendra deux entiers en argument, la premi`ere (respectivement deuxi`eme) sera vraie si son premier argument est plus grand (resp. plus petit) que le deuxi`eme. Au moyen de ces fonctions et de la fonction pr´ec´edente, r´ealisez le tri croissant et le tri d´ecroissant d’une liste d’entiers.

4. Nous voulons impl´ementer le sch´ema de calcul r´ecursif suivant : fonction(op´eration, neutre, liste) =

siliste = vide

alorsrenvoyer neutre

sinonrenvoyer op´eration(tˆete(liste), fonction(op´eration, neutre, reste(liste)))

(a) ´Ecrivez une fonction r´ealisant ce sch´ema de calcul en supposant que la liste est une liste d’entiers, et queop´erationest une fonction qui prend deux entiers en entr´ee et renvoie un entier.

(b) Au moyen de la fonction pr´ec´edente, calculez la somme des ´el´ements d’une liste d’entiers.

(c) Toujours au moyen de la mˆeme fonction, calculez le maximum d’une liste d’entiers positifs.

(d) Finalement, calculez le longueur d’une liste.

5. Nous r´ealisons des listes chaˆın´ees au moyen du type suivant : typedef struct student {

char * nom; int age; float taille; void * truc;

struct student * suivant;

} Eleve;

(a) ´Ecrivez une fonction de tri d’une liste d’objets de type Eleve. La fonction de comparaison ´etant pass´ee en argument.

(b) R´ealisez un tri croissant sur le champaged’une liste d’objets de typeEleve.

(c) R´ealisez un tri croissant sur le champtailled’une liste d’objets de typeEleve.

(d) R´ealisez un tri croissant sur le champtrucd’une liste d’objets de typeEleve, en supposant que ce champ sert `a stocker un entier.

Références

Documents relatifs

Les deux op´ erations de base utilis´ ee utilis´ ees pour inverser une matrice sont l’´ echange de deux lignes et l’ajout une ligne ` a une autre.. Ecrivons

BCPST R´ esolution de syst` emes et inversions de matrice 2016-2017 Le but de ce TP est de finir le dernier TP en ´ ecrivant l’ensemble des algorithmes sur les matrices vus dans

- Si on n’a plus besoin d’un bloc de mémoire réservé dynamiquement par malloc, alors on peut le libérer à l’aide de la fonction

a+i c’est l’adresse du i-ème élément du tableau a+i c’est aussi &a[i]. L’incrément/décrément dépend du type de

● Permet de manipuler des variables par leur adresse (unique dans la mémoire). ● Passage d’arguments

[r]

Pour un pointeur sur une variable de type char, la valeur donne l’adresse de l’octet ou cet variable est stockée. Pour un pointeur sur une variable de type short,

Dessinez un schéma de la mémoire pour la structure suivante en prenant en compte la taille des différents éléments de