You are on page 1of 6

Correction de la série de TD ASD N°6 (Les pointeurs)

EXERCICE 1
Algorithme Exercice1
Variables
t1,t2 : tableau [1..10] d’entier//allocation statique
t3 : pointeur sur entier //allocation dynamique int *t3,*p1 ;//en langage C
p1,p2,p3 : pointeur sur entier
i,j,k,n1,n2 : entier
Début t1 5 8
//Remplissage de t1 i: 1 2 3 4 5 n :6
Répéter Adresse : t1 t1+1 t1+2 …. t1+n-1
Ecrire(‘’donner la dimension de t1’’) =(t1+5)

Lire(n1) Contenu : (t1)^ (t1+1)^ (t1+2)^ …. ( t1+n-1)^


Jusqu’à(n1>=5 et n1<=10) t1[1] t1[2] t1[3] …. t1[n]

*(t1) ;//en langage C


//en cas d’allocation dynamique de t1
t1 : pointeur sur entier
t1allouer(n1)*taille(entier)
t1=(int *)malloc(n1*sizeof(int));//en langage C

//1ère solution : nom du tableau comme pointeur


Ecrire(‘’donner l’élément 1 de t1’’)
Lire(t1^)
//2ème sol
Pour i de 2 à n1 Faire
Pour i de 1 à n1-1 Faire
Répéter
Répéter
Ecrire(‘’donner l’élément’’, i, ‘’de t1’’)
Ecrire(‘’donner l’élément’, i+1, ‘’de t1’’)
Lire((t1+i-1)^)
Lire((t1+i)^)
Jusqu’à((t1+i-1)^ >=(t1+i-2)^)
Jusqu’à((t1+i)^ >(t1+i-1)^)
FinPour
FinPour

//2ème solution : utilisation de variables comme pointeurs


//Remplissage de t2
Répéter
Ecrire(‘’donner la dimension de t2’’)
Lire(n2)
Jusqu’à(n2>=5 et n2<=10)
p2t2
Ecrire(‘’donner l’élément 1 de t2’’)
Lire(p2^)
Pour p2 de t2+1 à t2+n2-1 Faire
Répéter
Ecrire(‘’donner l’élément’’, p2-t2+1, ‘’de t2’’)
Lire((p2)^)
Jusqu’à((p2)^ >=(p2-1)^)
FinPour

//Fusion de t1 et t2 dans un tableau t3 : 1ère solution : nom du tableau comme pointeur


t3allouer((n1+n2))*taille(entier)
i1
j1
k1
tantque (i<=n1 et j<=n2) faire
si ((t1+i-1)^ <( t2+j-1)^) alors

Page 1 sur 6  Mme Soumaya Ghorbel Yengui


(t3+k-1)^(t1+i-1)^
kk+1
ii+1
sinon
(t3+k-1)^(t2+j-1)^
kk+1
jj+1
finsi
fintantque
tantque (i<=n1) faire
(t3+k-1)^(t1+i-1)^
kk+1
ii+1
fintantque
tantque (j<=n2) faire
(t3+k-1)^(t2+j-1)^
kk+1
jj+1
fintantque
//Fusion de t1 et t2 dans un tableau t3 : 2ème solution : utilisation de variables comme pointeurs
p1t1
p2t2
p3t3
tantque (p1<=t1+n1-1 et p2<=t2+n2-1) faire
si ((p1)^ < (p2)^) alors
(p3)^(p1)^
p3p3+1
p1p1+1
sinon
(p3)^(p2)^
p3p3+1
p2p2+1
finsi
fintantque
tantque (p1<=t1+n1-1) faire
//2ème sol : Affichage de t3 dans l’ordre décroissant
(p3)^(p1)^
Pour i de n1+n2 à 1 pas=-1 Faire
p3p3+1
Ecrire((t3+i-1)^)
p1p1+1
FinPour
fintantque
tantque (p2<=t2+n2-1) faire
//3ème sol : Affichage de t3 dans l’ordre décroissant
(p3)^(p2)^
Pour p1 de t3+n1+n2-1 à t3 pas=-1 Faire
p3p3+1
Ecrire(p1^)
p2p2+1
fintantque FinPour
//Affichage de t3 dans l’ordre décroissant
//4ème sol : Affichage de t3 dans l’ordre décroissant
Pour p1 de p3-1 à t3 pas=-1Faire
Ecrire(p1^) Pour p1 de @t3[n1+n2] à @t3[1] pas=-1 Faire
FinPour Ecrire(p1^)
FinPour

Libérer (t3) //en langage C : free(t3);


P1NIL, P2NIL, P3NIL, t3NIL //en langage C : t3=NULL ;
Fin

Page 2 sur 6  Mme Soumaya Ghorbel Yengui


EXERCICE 2
Algorithme Exercice2
Variables
t1,t2,p1,p2 : pointeur sur entier
n1,n2 : entier
Début
Répéter
Ecrire(‘’donner la dimension de t1’’)
Lire(n1)
Jusqu’à(n1>=5 et n1<=10)
//allocation dynamique de la mémoire pour t1
t1allouer(n1*taille(entier))

//chargement de t1 dans un ordre croissant


Ecrire(‘’donner l’élément 1 de t1’’)
Lire(t1^)
Pour p1 de t1+1 à t1+n1-1 Faire
Répéter
Ecrire(‘’donner l’élément’’, p1-t1+1, ‘’de t1’’)
Lire((p1)^)
Jusqu’à((p1)^ >=(p1-1)^)
FinPour

Répéter
Ecrire(‘’donner la dimension de t2’’)
Lire(n2)
Jusqu’à(n2>=5 et n2<=10)
//allocation dynamique de la mémoire pour t2
t2allouer((n1+n2)*taille(entier))

//chargement de t2 dans un ordre croissant par n2 éléments


Ecrire(‘’donner l’élément 1 de t2’’)
Lire(t2^)
Pour p2 de t2+1 à t2+n2-1 Faire
Répéter
Ecrire(‘’donner l’élément’’, p2-t2+1, ‘’de t2’’)
Lire((p2)^)
Jusqu’à((p2)^ >=(p2-1)^)
FinPour

//Insertion des éléments de t1 dans t2 t1 3 4 5 6 8


Pour p1 de t1 à t1+n1-1 Faire i: 1 2 3 4 n1:5
P1^
//adresse de la dernière case triée dans t2
p2t2+n2-1 t2 1 2 4 8 9
//faire le décalage pour chercher la bonne position où 3 4 8 9
j: 1 2 3 4 n2:5 n1+n2
insérer (p1)^
P2^
TantQue (p2^>p1^ et p2>=t2) Faire
(p2+1)^(p2)^
p2p2-1
FinTQ
//faire l’insertion
(p2+1)^p1^
n2n2+1
FinPour

Page 3 sur 6  Mme Soumaya Ghorbel Yengui


//Affichage de t2 à la fin
Pour p2 de t2 à t2+n2-1 Faire
Ecrire(p2^)
FinPour
Libérer (t1) ,t1NIL
Libérer (t2) ,t2NIL
Fin
EXERCICE 3
Algorithme Exercice3
Variables
T : Tableau [1..10] de caractères
p, p1: pointeur sur caractère
n : entier
c :caractère
Début
//Remplissage de t
Répéter
Ecrire(‘’donner la dimension de t’’)
Lire(n)
Jusqu’à(n>=5 et n<=10)
Pour p de t à t+n-1 Faire
Répéter
Ecrire(‘’donner un caractère’’)
Lire((p)^)
Jusqu’à(Majus((p)^)>=’A’ et Majus((p)^)<= ‘Z’)
FinPour
//saisie d’un caractère
Répéter
Ecrire(‘’donner un caractère)
Lire(c)
Jusqu’à(Majus(c)>=’A’ et Majus(c)<= ‘Z’)
//supprimer toutes les occurrences du caractère qui figurent dans le tableau
pt
TantQue (p<=t+n-1) Faire
Si ((p)^=c) Alors
Pour p1 de p à t+n-2 Faire
(p1)^(p1+1)^
FinPour
nn-1
sinon
pp+1
Finsi
FinTQ
//Affichage de t
Pour p de t à t+n-1 Faire
Ecrire(p^)
FinPour
Fin
EXERCICE 4
Algorithme Exercice4
Variables
t,p,q : pointeur sur caractère
n : entier
c ,x:caractère
Page 4 sur 6  Mme Soumaya Ghorbel Yengui
échange :booléen
Début
Répéter
Ecrire(‘’donner la dimension de t1’’)
Lire(n)
Jusqu’à(n>=5 et n<=10)
//allocation dynamique de la mémoire pour t
tallouer((n+1)*taille(caractère))

//chargement de t
Pour p de t à t+n-1 Faire
Répéter
Ecrire(‘’donner un caractère)
Lire((p)^)
Jusqu’à(Majus((p)^)>=’A’ et Majus((p)^)<= ‘Z’)
FinPour

//tri de t en utilisant le tri à bulle


Répéter
echange ←faux
Pour p de t à t+n-2 Faire
Si (p)^ > (p+1)^ Alors
x ← (p)^
(p)^ ← (p+1)^
(p+1)^ ← x
echange ← vrai
Finsi
FinPour
Jusqu’à (echange = faux)
//saisie d’un caractère
Répéter
Ecrire(‘’donner un caractère)
Lire(c)
Jusqu’à (Majus(c)>=’A’ et Majus(c)<= ‘Z’)

pt
TantQue (p<=t+n-1 et (p)^ < c) Faire
pp+1
FinTQ
// le décalage
Pour q de t+n-1 à p pas=-1 Faire
(q+1)^(q)^
FinPour
nn+1
//Ajout du caractère
(p^)c
//Affichage de t
Pour p de t à t+n-1 Faire
Ecrire(p^)
FinPour
Libérer (t) ,tNIL
pNIL, qNIL
Fin

Page 5 sur 6  Mme Soumaya Ghorbel Yengui


EXERCICE 5
Algorithme Exercice5
Variables
t,p,q : pointeur sur entier
n,v : entier
Début
Répéter
Ecrire(‘’donner la dimension de t1’’)
Lire(n)
Jusqu’à(n>=5 et n<=100)
//allocation dynamique de la mémoire pour t
tallouer((n+1)*taille(entier))
//chargement de t dans un ordre croissant
pt
Ecrire(‘’donner l’élément 1 de t’’)
Lire(p^)
Pour p de t+1 à t+n-1 Faire
Répéter
Ecrire(‘’donner l’élément’’, p-t+1, ‘’de t’’)
Lire((p)^)
Jusqu’à((p)^ >(p-1)^)
FinPour
//saisie d’un entier
Ecrire(‘’donner un entier)
Lire(v)
pt
TantQue (p<t+n et (p)^ < v) Faire
pp+1
FinTQ
// le décalage
Pour q de t+n-1 à p pas=-1Faire
(q+1)^(q)^
FinPour
nn+1
//Ajout du caractère
(p)^v
//Affichage de t
Pour p de t à t+n-1 Faire
Ecrire(p^)
FinPour
Fin

Page 6 sur 6  Mme Soumaya Ghorbel Yengui

You might also like