diff --git a/expression.py b/expression.py index 737fd54..7c63309 100644 --- a/expression.py +++ b/expression.py @@ -1,4 +1,5 @@ from Pile import Pile_chaine as Pile +import math class Expression: "permet de représenter et manipuler une expression arithmpétique sous forme d'un arbre" @@ -15,11 +16,18 @@ class Expression: return self.gauche.evalue() * self.droit.evalue() if self.racine == '+': return self.gauche.evalue() + self.droit.evalue() + if self.racine == '-': + return self.gauche.evalue() - self.droit.evalue() + if self.racine == '/': + return self.gauche.evalue() / self.droit.evalue() + + def racine_carre(self): + return math.sqrt(self.racine) def __str__(self): "affiche l'expression" exp = "" - if self.racine != '*' or self.racine != '+': + if self.racine != '*' or self.racine != '+' or self.racine != '-' or self.racine != '/': if self.gauche != None: exp = "(" + exp + str(self.gauche) exp = exp + str(self.racine) @@ -31,7 +39,7 @@ class Expression: def npi2tree(lst): p = Pile() for elem in lst: - if elem == '+' or elem =='*': + if elem == '+' or elem =='*' or elem == '-' or elem == '/': racine = elem fils_d = p.depiler() fils_g = p.depiler() @@ -45,10 +53,12 @@ def npi2tree(lst): if __name__ == "__main__": exp = Expression('*', - Expression('+', - Expression(4, None, None), + Expression('/', + Expression(1.5, None, None), Expression(3, None, None)), - Expression(6, None, None)) + Expression(6.5, None, None)) print(exp.evalue()) print(exp) - print(npi2tree(["6", "4", "3", "+", "*"])) \ No newline at end of file + e = npi2tree(["6", "4", "3", "+", "-"]) + print(e.evalue()) +