|
|
@ -1,4 +1,5 @@ |
|
|
from Pile import Pile_chaine as Pile |
|
|
from Pile import Pile_chaine as Pile |
|
|
|
|
|
import math |
|
|
|
|
|
|
|
|
class Expression: |
|
|
class Expression: |
|
|
"permet de représenter et manipuler une expression arithmpétique sous forme d'un arbre" |
|
|
"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() |
|
|
return self.gauche.evalue() * self.droit.evalue() |
|
|
if self.racine == '+': |
|
|
if self.racine == '+': |
|
|
return self.gauche.evalue() + self.droit.evalue() |
|
|
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): |
|
|
def __str__(self): |
|
|
"affiche l'expression" |
|
|
"affiche l'expression" |
|
|
exp = "" |
|
|
exp = "" |
|
|
if self.racine != '*' or self.racine != '+': |
|
|
if self.racine != '*' or self.racine != '+' or self.racine != '-' or self.racine != '/': |
|
|
if self.gauche != None: |
|
|
if self.gauche != None: |
|
|
exp = "(" + exp + str(self.gauche) |
|
|
exp = "(" + exp + str(self.gauche) |
|
|
exp = exp + str(self.racine) |
|
|
exp = exp + str(self.racine) |
|
|
@ -31,7 +39,7 @@ class Expression: |
|
|
def npi2tree(lst): |
|
|
def npi2tree(lst): |
|
|
p = Pile() |
|
|
p = Pile() |
|
|
for elem in lst: |
|
|
for elem in lst: |
|
|
if elem == '+' or elem =='*': |
|
|
if elem == '+' or elem =='*' or elem == '-' or elem == '/': |
|
|
racine = elem |
|
|
racine = elem |
|
|
fils_d = p.depiler() |
|
|
fils_d = p.depiler() |
|
|
fils_g = p.depiler() |
|
|
fils_g = p.depiler() |
|
|
@ -45,10 +53,12 @@ def npi2tree(lst): |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
if __name__ == "__main__": |
|
|
exp = Expression('*', |
|
|
exp = Expression('*', |
|
|
Expression('+', |
|
|
Expression('/', |
|
|
Expression(4, None, None), |
|
|
Expression(1.5, None, None), |
|
|
Expression(3, None, None)), |
|
|
Expression(3, None, None)), |
|
|
Expression(6, None, None)) |
|
|
Expression(6.5, None, None)) |
|
|
print(exp.evalue()) |
|
|
print(exp.evalue()) |
|
|
print(exp) |
|
|
print(exp) |
|
|
print(npi2tree(["6", "4", "3", "+", "*"])) |
|
|
e = npi2tree(["6", "4", "3", "+", "-"]) |
|
|
|
|
|
print(e.evalue()) |
|
|
|
|
|
|
|
|
|