You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
2.0 KiB

4 weeks ago
from File import File_chaine as File
from Pile import Pile_chaine as Pile
class Expression:
4 weeks ago
def __init__(self, valeur, gauche=None, droite=None):
self.valeur = valeur
self.gauche = gauche
self.droite = droite
def evalue(self):
if type(self.valeur) == int:
return self.valeur
if self.valeur == '+':
return self.gauche.evalue() + self.droite.evalue()
if self.valeur == '*':
return self.gauche.evalue() * self.droite.evalue()
4 weeks ago
if self.valeur == '/':
return self.gauche.evalue() / self.droite.evalue()
if self.valeur == '-':
return self.gauche.evalue() - self.droite.evalue()
4 weeks ago
def __str__(self):
if type(self.valeur) == int:
return str(self.valeur)
4 weeks ago
if self.valeur == '+':
return "("+ str (self.gauche) + "+" + str (self.droite) + ")"
if self.valeur == '*':
return "("+ str (self.gauche) + "*" + str (self.droite) + ")"
if self.valeur == '/':
return "("+ str (self.gauche) + "/" + str (self.droite) + ")"
if self.valeur == '-':
return "("+ str (self.gauche) + "-" + str (self.droite) + ")"
4 weeks ago
4 weeks ago
if __name__ =="__main__":
e = Expression('*',
Expression(6, None, None),
Expression('+',
Expression(4, None, None),
Expression(3, None, None)
)
)
3 weeks ago
4 weeks ago
class Conversion:
def npi2tree (lst):
3 weeks ago
"""fonction npi2tree prenant en paramètre une liste correspondant l’expression en notation
4 weeks ago
polonaise inversée et renvoyant larbre (de type Expression) correspondant"""
3 weeks ago
p = Pile(Expression)
lst = []
for ele in lst :
if ele == '+' or ele == '*':
exp = Expression(ele, Expression())
p.empiler(exp)
else:
p.empiler ...
return exp
4 weeks ago