Correction TD 7 :Recherche et d´ enombrement dans les tableaux
Licence 1 MASS semestre 2, 2007/2008
Exercice 1 : Plus petit
a- Algorithme Indice Min(T : tableau d’entiers;n: entier) : entier d´ebut
variable i,r, m: entier m←T[0]
r←0
pouride 0`a n−1 faire sim > T[i]alors
r←i m←T[i]
fin si fin pour retournerr fin
b- Algorithme Min D´ebut(T : tableau d’entiers;n: entier) : rien d´ebut
variable i,k,tmp: entier k←Indice Min(T,n) tmp←T[0]
T[0]←T[k]
T[k]←tmp fin
c- Algorithme Compte Min(T : tableau d’entiers;n: entier) : entier d´ebut
variable i,c : entier Min D´ebut(T,n) c←1
pouride 1`a n−1 faire siT[i] =T[0]alors
c←c+ 1 fin si fin pour retournerc fin
1
Exercice 2 : Chaine d’ADN
a- Algorithme Compte ATA(T : tableau de lettres;n: entier) : entier d´ebut
variable k,c : entier c←0
k←0
tant quek≤n−3 faire
siT[k] = ’A’etT[k+ 1] = ’T’et T[k+ 2] = ’A’alors c←c+ 1
k←k+ 3 sinon
k←k+ 1 fin si fin tant que retournerc fin
b- Algorithme appariement(b1, b2 : entier) : boolen d´ebut
retourner (b1= ’A’ et b2 = ’T’)ou (b1= ’T’et b2= ’A’) ou (b1 =
’G’etT2[i] = ’C’)ou (b1= ’C’et b2= ’G’) fin
Algorithme Compte Erreur(T1, T2 : tableau de lettres; n : entier) : entier
d´ebut
variable i,c : entier c←0
pouride 0`a n−1 faire
si non appariement(T1[i],T2[i]) alors c←c+ 1
fin si fin pour retournerc fin
Exercice 3 : Tirage de d´ es
a- Algorithme D´e() : entier d´ebut
retournermodulo(rand(), 6) + 1 fin
b- Algorithme ND´e(n: entier) : tableau d’entier d´ebut
variable T : tableau d’entiers de taillen;i : entier pouride 0`a n−1 faire
2
T[i]←D´e() fin pour retournerT fin
c- Algorithme Fr´equence(tirage: tableau d’entier,n: entier) : tableaux de 6 r´eels
d´ebut
variable T : tableaux de 6 r´eels;i: entier pouride 0`a 5faire
T[i]←0 fin pour
pouride 0`a n−1 faire
T[tirage[i]−1]←T[tirage[i]−1] +n1 fin pour
retournerT fin
d- Algorithme Double Six(T1,T2: tableau d’entiers;n: entier) : r´eel d´ebut
variable i: entier;f : r´eel f ←0
pouride 0`a n−1 faire siT1[i] = 6 etT2[i] = 6alors
f ←f+ 1 fin si fin pour retourner fn fin
e- Algorithme Somme(T1,T2 : tableau d’entiers;n: entier) : tableau de 12 r´eels
d´ebut
variable i: entier;cpt : tableau de 12 r´eels pouride 0`a 11faire
cpt[i]←0 fin pour
pouride 0`a n−1 faire
cpt[T1[i] +T2[i]] ←cpt[T1[i] +T2[i]] +n1 fin pour
retournercpt fin
f- Algorithme Chi2(T : tableau de 12 r´eels) : r´eel d´ebut
variable i: entier;c : r´eel c←0
pouride 0`a 11faire c←c+ 11(T[s]−111)2
3
fin pour retournerc fin
4