• Aucun résultat trouvé

TD 2 : allocation dynamique Fran¸cois Delbot Miage L2 - Universit´e de Nanterre 14 octobre 2011

N/A
N/A
Protected

Academic year: 2022

Partager "TD 2 : allocation dynamique Fran¸cois Delbot Miage L2 - Universit´e de Nanterre 14 octobre 2011"

Copied!
3
0
0

Texte intégral

(1)

TD 2 : allocation dynamique

Fran¸cois Delbot

Miage L2 - Universit´ e de Nanterre 14 octobre 2011

Chaque fois que vous impl´ementez une fonction, pensez `a bien indenter votre code, `a le commenter (sans pour autant paraphraser) et `a le standardiser . . .

Exercice 1. Pour se familiariser avec les pointeurs. Ecrire un pro- gramme qui :

1. Initialise des variables a,b,c de type entier, d de type caract`ere, e de type flottant (double ou float).

2. D´eclare des pointeurs (du bon type) p sur b, q sur d et r sur e.

3. Imprime `a l’´ecran, pour chaque pointeur, la valeur du pointeur (l’adresse de l’objet point´e) et la valeur de l’objet point´e.

Faire maintenant pointer p `a c et imprimer son adresse et la valeur de l’objet point´e. Modifier la valeur point´ee par p pour qu’elle soit ´egale `a la valeur de a.

Imprimer `a l’´ecran l’adresse et la valeur point´ee par p, puis les valeurs de a, b et c.

Exercice 2. On s’amuse avec les pointeurs... Compl´eter le tableau en indiquant les valeurs des diff´erentes variables au terme de chaque instruction du programme suivant (on peut aussi indiquer sur quoi pointent les pointeurs) :

programme a b c p1 *p1 p2 *p2

int a, b, c, *p1, *p2 ; ? ? ? ? ? ? ?

a = 1, b = 2, c = 3 ; p1 = &a, p2 = &c ;

*p1 = (*p2)++ ; p1 = p2 ; p2 = &b ;

*p1 -= *p2 ; ++*p2 ;

*p1 *= *p2 ; a = ++*p2 * *p1 ; p1 = &a ;

*p2 = *p1 /= *p2 ;

1

(2)

Exercice 3. ´Echange de variables. Ecrivez une fonction qui permet d’´echanger´ le contenu de deux variables de type int qui lui sont ext´erieures. ´Ecrire l’appel de cette fonction dans un main.

Exercice 4. Ecrire une fonction qui alloue dynamiquement un tableau dont la taille est pass´ee en argument et le remplit de 0. Cette fonction doit retour- ner l’adresse du premier ´el´ement du tableau. Ecrire une fonction qui accepte en argument un pointeur vers un tableau ainsi que sa taille et le remplit de va- leurs al´eatoires. Enfin, ´ecrire une fonction qui affiche les ´el´ements d’un tableau.

Utiliser cette derni`ere pour v´erifier que vos deux premi`eres fonctions marchent comme on le souhaite.

Exercice 5. Consid´erons les d´eclarations suivantes : int tab[] ={5, 15, 34, 54, 14, 2, 52, 72};

int *p = &tab[1], *q = &tab[5] ; 1. Quelle est la valeur de *(p+3) ? 2. Quelle est la valeur de *(q-3) ? 3. Quelle est la valeur de q-p ?

4. La conditionp < q est-elle vraie ou fausse ? 5. La condition∗p <∗qest-elle vraie ou fausse ?

Exercice 6.Concat´enation. Ecrivez une fonction qui prend en arguments´ deux tableaux et leurs tailles respectives, et qui renvoie leur concat´enation. Il faudra allouer un nouveau tableau pour contenir cette concat´enation.

Exercice 7. Impl´ementer l’algorithme du tri fusion vu en cours en utilisant l’allocation dynamique.

Exercice 8. Ecrire une fonction qui alloue la m´emoire d’une matrice de taille lignes*colonnes, puis qui l’initialise `a la valeur val,

int ** allouematrice(in t lignes,int colonnes,int val) Ecrire la fonction

void liberematrice(int ** matrice, int n)

qui lib`ere la matrice. Afficher cette matrice pour tester vos fonctions.

Exercice 9. Le triangle de pascal. Ecrire un programme qui construit le triangle de Pascal de degr´e n et le m´emorise dans une matrice triangulaire Mat allou´ee dynamiquement.

Exemple :Triangle de Pascal de degr´e 6 :

2

(3)

n=0 1

n=1 1 1

n=2 1 2 1

n=3 1 3 3 1

n=4 1 4 6 4 1

n=5 1 5 10 10 5 1

n=6 1 6 15 20 15 6 1

M´ethode : Calculer et afficher seulement les valeurs jusqu’`a la diagonale (incluse). Limiter le degr´e `a entrer par l’utilisateur `a 13.

Construire le triangle :

– Initialiser le premier ´el´ement et l’´el´ement de la diagonale `a 1.

– Calculer les valeurs entre les ´el´ements initialis´es de gauche `a droite en utilisant la relation :

Pi,j=Pi−1,j+Pi−1,j−1

3

Références

Documents relatifs

- En red´efinissant les variables sur un mˆeme espace de probabilit´e, il e possible de transformer convergence en loi vers converge p.s., c’e le th´eor`eme de repr´esentation

(2) ´ Ecrire une fonction traitement qui prend pour arguments une image et une fonction puis applique cette fonction sur la valeur de chacun des pixels de l’image.. (3) Red´

Dans un premier temps, on r´ epondra aux questions ` a l’´ ecrit puis pour v´ erifier que nos algorithmes sont bien ´ ecrits, on les programmera sur machine.. Exercice

[r]

Le fichier joint contient les donn´ ees permettant de tracer le spectre d’´ emission du soleil (i.e.. En utilisant la fonction indice max(liste) d´

Pour cela, ` a partir d’un texte (en fran¸ cais par exemple), on calcule les probabilit´ es qu’une lettre donn´ ee se trouve im´ ediatement apr` es une autre lettre donn´ ee1.

Ecrire une fonction qui accepte en argument un pointeur vers un element de type liste (maillon), ainsi qu’un pointeur vers une liste chainée constituée d’éléments de type

Un projectile ayant une vitesse horizontale v 0 vient s’encastrer dans un bloc de bois de masse M suspendu ` a l’extr´ emit´ e d’une ficelle.. (a) Quelle est la vitesse du