Vous êtes sur la page 1sur 5

Correction de la série de TD ASD N°7 (Les fonctions et les procédures)

Exercice 1
Procédure charger (Var T: Tab, N : entier) Procédure charger (Var T: Tableau de caractères, N : entier)
Variable
i,j : entier
existe : booléen
Début
Ecrire("donner la lettre T[1] ")
Répéter
Lire(T[1])
Jusqu’à(Majus (T[1])>=’A’ et Majus (T[1])< =’Z’)
Pour i de 2 à N Faire
Répéter i 1 2ème sol
Répéter Répéter
Ecrire ("donner la lettre T[",i, "]" ) Lire(c)
Lire(T[i]) Si (EstMajuscule(c) ou EstMinuscule(c)) alors
Jusqu’à(Majus (T[i])>=’A’ et Majus (T[i])< =’Z’) j0
Répéter
jj+1
j0
existe (T1[j]=c)
existefaux
Jusqu’à (existe = vrai ou j=i )
Répéter
si (non(existe)) alors
jj+1
ii+1
Si(T[i]=T[j]) alors T1[i]c
existevrai FinSi
finSi FinSi
Jusqu’à(j=i-1ou existe=vrai ) Jusqu’à (i=N)
Jusqu’à(existe=faux)
FinPour
Fin
---------------------------------------------------------------------------------------------------------
Fonction verif (V: Tab, Mot: Tab, N: entier, L: entier) : booléen
Variables
existe: booléen
i,j: entier
Début
2ème sol 3ème sol
existe  vrai existe  vrai i  1,j  1
i1 i0 répéter
Tanque (i<=L et existe) Faire répéter Si (Mot[i] ≠V[j]) alors
j1 i  i+1 j  j+1
existe  faux j0 sinon
Tanque (j<=N et existe =faux) Faire répéter i  i+1
Si (Mot[i] =V[j] ) Alors j  j+1 j1
existe  vrai Jusqu’à(Mot[i] =V[j] ou j= N) finSi
Finsi Si (Mot[i] ≠V[j]) alors Jusqu’à(j=N+1 ou i= L+1)
j  j+1 existe  faux retourner (i= L+1)
FinTQ finSi
i i+1 Jusqu’à(existe = faux ou i= L)
FinTQ retourner existe
retourner existe // ou : Verif existe
Fin
---------------------------------------------------------------------------------------------------------
Procédure déplacer (Var T: Tab, Mot: Tab, N: entier, L: entier)
Variable
aux : caractère
i,j : entier
Début
Pour i de 1 à L Faire
j0
répéter
Page 1 sur 5  Mme Soumaya Ghorbel Yengui
j  j+1
Jusqu’à(Mot[i] =T[j] ou j= N)
Si (Mot[i] = T[j]) alors
aux  T[i]
T[i]  T[j]
T[j] aux
Finsi
FinPour
Fin
---------------------------------------------------------------------------------------------------------
Procédure Tri (Var T: Tab, n: entier)
Variables
x : caractère
i,j, indmin : entier
Début
pour i de 1 à n-1 faire
indmin  i
pour j de 1 + i à n faire
si ( T[j] < T[indmin] ) alors
indmin  j
finsi
finpour
Si (indmin ≠ i) alors
x  T[i]
T[i]  T[indmin]
T[indmin]  x
finSi
FinPour
Fin
---------------------------------------------------------------------------------------------------------
Fonction verifFixe( T: Tab, Mot: Tab, L: entier):booléen
Variables
fixe: booléen
i : entier
Début 2ème sol
i1 i0
fixe  vrai répéter
Tanque (i <= L et fixe) Faire i  i+1
Si (T[i] ≠ Mot[i]) Alors Jusqu’à(T[i] ≠ Mot[i] ou i= L)
fixe  faux Si (T[i] ≠ Mot[i]) Alors
Finsi Retourner faux
i  i+1 sinon
FinTQ Retourner vrai
retourner fixe //verifFixe fixe finSi
Fin
---------------------------------------------------------------------------------------------------------
Algorithme Principal
Type
Tab : Tableau [1..52] de caractère

Variables
V,Mot1 : Tab
Mot :chaîne de caractère
L,N,i : entier
verif, fixe : booléen
Début
Répéter
Ecrire ("donner la taille du tableau")
lire (N)
Jusqu'à (N>0 et N<=52)
charger(V,N)
Page 2 sur 5  Mme Soumaya Ghorbel Yengui
Répéter
Ecrire(("donner la taille du mot")
Lire (L)
Jusqu'à (L>0 et L<N)
charger(Mot1,L)
Mot""
pour i de 1à L faire
Mot Mot +Mot1[i]
finPour

verif verif(V,Mot1,N,L)
Si (verif=faux) Alors
Ecrire("le mot",Mot,"n'existe pas dans le tableau")
Sinon
Ecrire(("le mot",Mot,"existe dans le tableau")
déplacer(V,Mot1,N,L)
tri(V,N)
fixe  verifFixe(V,Mot1,L)
Si (fixe= vrai) Alors
Ecrire ("La position n'a pas changé")
Sinon
Ecrire("La position a changé")
Finsi
Finsi
Fin

Exercice 2
Procédure Affiche (T:Tab) // Procédure Affiche (T: Tableau [] de Entier)
Variables
i,taille : entier
Début
taille  T [1]+1
Pour i de 2 à taille Faire
Ecrire(T[i])
finPour
Fin
---------------------------------------------------------------------------------------------------------
Fonction estVide(T:Tab):booléen
Début
estVideT[1]=0 Retourner (T[1]=0)
Fin
---------------------------------------------------------------------------------------------------------
Fonction estPlein(T:Tab):booléen
Début
estPlein T[1]=N-1 Retourner (T[1]= N-1)
Fin
---------------------------------------------------------------------------------------------------------
Fonction indice(T:Tab, x:entier):entier
Variables
premier, dernier, m: entier
trouve :booléen
Début
premier2
dernier T[1]+1
trouvefaux
Répéter
m(premier+dernier) div 2
Si (x < T[m]) Alors
dernier  m-1

Page 3 sur 5  Mme Soumaya Ghorbel Yengui


sinon
Si (x >T[m]) Alors
premier  m+1
sinon
trouve  vrai
Finsi
Finsi
Jusqu'à (trouve=vrai ou premier >dernier)
Si (trouve=vrai) Alors
indicem Retourner(m)
sinon
indice -1 Retourner(-1)
Finsi
Fin
---------------------------------------------------------------------------------------------------------
Procédure supprimeFin(Var T:Tab)
Début
Si (T[1] >=1) Alors Si (non(estVide(T))) alors
T[1]T[1]-1
Finsi
Fin
---------------------------------------------------------------------------------------------------------
Procédure ajouteFin (Var T:Tab,x:entier)
Début
Si (T[1] > 0 et T[1]<N-1) Alors Si (non(estVide(T))) et non(estPlein (T))) alors
Si (x> T[T[1]+1] Alors
T[1] T[1]+1
T[T[1]+1] x
Finsi
Finsi
Si (estVide(T)) alors
Si (T[1] = 0)
T[1] T[1]+1 T[1] 1
T[T[1]+1] x T[2] x
Finsi
Fin
---------------------------------------------------------------------------------------------------------
Procédure décalage(Var T:Tab, i:entier,j:entier,GD:booléen)
Variable
k: entier
Début
Si (GD=vrai) Alors //décalage vers la gauche
Si i=2 Alors
ii+1
Finsi
pour k de i à j Faire
T[k-1]T[k]
FinPour
Sinon //décalage vers la droite
Si j=N alors
jj-1
Finsi
pour k de j à i pas=-1Faire
T[k+1]T[k]
FinPour
Finsi
Fin
---------------------------------------------------------------------------------------------------------
Procédure insérer (Var T:Tab,x:entier)
Variable
i:entier
b:booléen
Page 4 sur 5  Mme Soumaya Ghorbel Yengui
Début
Si (indice(T, x) = -1 et estPlein(T)=faux) Alors
i1
bfaux
Répéter
ii+1
si T[i] >x alors
bvrai
Finsi
jusqu'à( b=vrai ou i=T[1]+1)

décalage(T, i, T[1]+1, faux)

Si b alors
T[i]x
sinon
T[i+1]x
Finsi
T[1]T[1]+1
Finsi
Fin
---------------------------------------------------------------------------------------------------------
Procédure supprimer (Var T:Tab, x:entier)
Variable
ind: entier
Début
indindice(T,x)
si (ind≠-1) alors
décalage(T,ind+1,T[1]+1,vrai)
T[1]T[1]-1
Finsi
Fin
---------------------------------------------------------------------------------------------------------

Page 5 sur 5  Mme Soumaya Ghorbel Yengui

Vous aimerez peut-être aussi