0% ont trouvé ce document utile (0 vote)
114 vues2 pages

Corrigé TD Pile File

Transféré par

Arm Full
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
114 vues2 pages

Corrigé TD Pile File

Transféré par

Arm Full
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

## Correction Pile / Fichiers (Extrait CNC 2015)

## Question 1 :

# l'interet d'utiliser l'écriture post-fixée est de pouvoir ecrire une expression mathématique
sans utiliser les parenthèses

## Question 2 :
def estVide(pile):
if pile ==[]:
return True
return False

## Question 3 :
def empiler(pile,elem):
[Link](0,elem)

## Question 4 :
def depiler(pile):
return [Link](0)

## Question 5 :
def valeurSommet(pile):
print(pile[0])

## Question 6 :

# Version 1 (itérative):
def estEntier(expr) :
n = len(expr)
for i in range(n) :
if expr[i] <'0' or expr[i]>'9' :
return False
return True

# Version 2 (récursive):
def estEntier(expr) :
if expr=='' :
return True

if expr[0] <'0' or expr[0]>'9' :


return False
else :
return estEntier(expr[1:])

## Question 7 :
def eval(op,e1,e2):
assert estEntier(e1) == True and estEntier(e2) == True
assert op in ['+','-','*','/']
e1 = int(e1)
e2 = int(e2)
if op=='+':
return e1 + e2
elif op=='-':
return e1 - e2
elif op=='*':
return e1 * e2
else:
if e2 != 0 :
return e1/e2
else :
return None

## Question 8 :
def evalue(expr):
pile = []
for i in expr:
# Si expr[i] est un entier on l'empile
if estEntier(i)==True:
empiler(pile,i)
#sinon on depile deux valeurs, on applique l'opérateur et on empile le resultat
else:
e1=depiler(pile)
e2=depiler(pile)
e3=eval(i,e1,e2)
empiler(pile,str(e3))

return int(depiler(pile))

print(evalue(['3','6','+','7','-']))

Vous aimerez peut-être aussi