Vous êtes sur la page 1sur 6

Correction TD 5

Exercice 1

Algorithme Exercice1
Variables
t1,t2,t3 : tableau [1..100] d’entier
p1,p2,p3 : pointeur sur entier
i,j,k,n1,n2 : entier
Début
//1ère solution : nom du tableau comme pointeur
//Remplissage de t1
Répéter
Ecrire(‘’donner la dimension de t1’’)
Lire(n1)
Jusqu’à(n1>=5 et n1<=5) Pour i de 1 à n1-1 Faire
Ecrire(‘’donner l’élément 1 de t1’’) Répéter
Lire(t1^) Ecrire(‘’donner l’élément’, i+1, ‘’de t1’’)
Pour i de 2 à n1 Faire Lire((t1+i)^)
Répéter Jusqu’à((t1+i)^ >(t1+i-1)^)
Ecrire(‘’donner l’élément’, i, ‘’de t1’’) FinPour
Lire((t1+i-1)^)
Jusqu’à((t1+i-1)^ >(t1+i-2)^)
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<=5)
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
i1
j1
k1
tantque (i<=n1 et j<=n2) faire
si ((t1+i-1)^ < t2+j-1)^) alors
(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


t3allouer((n1+n2))*taille(entier)
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
(p3)^(p1)^
p3p3+1
p1p1+1
fintantque
tantque (p2<=t2+n2-1) faire
(p3)^(p2)^
p3p3+1
p2p2+1
fintantque
//Affichage de t3 dans l’ordre décroissant
Pour p1 de p3-1 à t3 pas=-1Faire
Ecrire(p1^)
FinPour
Fin
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<=5)
//allocation dynamique de la mémoire pour t1
t1allouer(n1*taille(entier))
Répéter
Ecrire(‘’donner la dimension de t2’’)
Lire(n2)
Jusqu’à(n2>=5 et n2<=5)
//allocation dynamique de la mémoire pour t2
t2allouer((n2+n2)*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 t2’’)
Lire((p1)^)
Jusqu’à((p1)^ >(p1-1)^)
FinPour
//Insertion des éléments de t1 dans t2
Pour p1 de t1 à t1+n1-1 Faire
//adresse de la dernière case triée dans t2
p2t2+n2-1
//faire le décalage pour chercher la bonne position où insérer
TantQue (p2^>p1^ et p2>=t2) Faire
(p2+1)^(p2)^
p2p2-1
FinTQ
//faire l’insertion
(p2+1)^p1^
n2n2+1
FinPour
//Affichage de t2 à la fin
Pour p1 de t2 à t2+n2-1 Faire
Ecrire(p2^)
FinPour
Fin

Exercice 3

Algorithme Exercice3
Variables
T : Tableau [1..100] 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
(p)^(p+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 :caractère
é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 et (p)^ < c) 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)c
//Affichage de t
Pour p de t à t+n-1 Faire
Ecrire(p^)
FinPour
Fin

Exercice 5

Algorithme Exercice5
Variables
t,p,q : pointeur sur entier
n : entier
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

Vous aimerez peut-être aussi