Devoir n2
Devoir n2
Devoir n2
Informatique
Devoir N°2
Durée : 2H00
2) Des programmes sont présentés ci-dessous. Dites ce que chacun fait et calculez sa complexité
dans le meilleur des cas et dans le pire des cas.
Les programmes b) et c) sont composés de deux fonctions.
a) b)
def majoritaire(L): def u(n):
xmaj=L[0] u=1
nmaj=nocc(xmaj,L) for i in range(n):
for i in range(1,len(L)): u=1-2*u
if nocc(L[i],L)>nmaj: return u
xmaj=L[i] def liste_u(n): L=[]
nmaj=nocc(L[i],L) for i in range(n+1):
return xmaj L.append(u(i))
return L
c) d)
def liste_u(n):
def nocc(x,L):
u=1
n=0
L=[u]
for y in L:
for i in range(n):
if x==y:
u=1-2*u
n=n+1
L.append(u)
return L
def u(n):
L=liste_u(n)
return L[-1]
Exercice 2 Piles
Soit une expression mathématique dont les éléments appartiennent à l’alphabet suivant :
A ={0,1,2,… ,9, +, −, *, /,(,),[, ]}.
1) Ecrivez un algorithme qui, à l’aide d’une unique pile d’entiers, vérifie la validité des
parenthèses et des crochets contenus dans l’expression. L’algorithme retournera 0 si
l’expression est correcte ou −1 si l’expression est incorrecte. On supposera que l’expression
est donnée sous forme d’une chaîne de caractères
2) Calculez la complexité de votre algorithme
Un technicien propose le schéma de gestion de la base de données d’une compagnie ferroviaire. Les
relations portant sur la partie gérant les trains ont été présentées ici. La description des 3 relations
est la suivante :
Dans chaque relation, la clé primaire est soulignée. Pour les tables contenant une clé étrangère,
celle-ci est préfixée par le caractère dièse (#).