Browse Source

Ajout opérateurs (’-’, ’/’, ’ˆ’)

master
FORESTIER Alexi 9 months ago
parent
commit
03767a9f3f
  1. 40
      Calc.py

40
Calc.py

@ -11,44 +11,44 @@ class Expression:
self.droit = droit
def evalue(self):
"""Calcule l'expression mathématique d'un arbre binaire"""
"""Renvoie le résultat de l'expression mathématique d'un arbre binaire"""
if self.valeur == '+':
self.valeur = self.gauche.evalue() + self.droit.evalue()
if self.valeur == '*':
elif self.valeur == '*':
self.valeur = self.gauche.evalue() * self.droit.evalue()
elif self.valeur == '/':
self.valeur = self.gauche.evalue() / self.droit.evalue()
elif self.valeur == '-':
self.valeur = self.gauche.evalue() - self.droit.evalue()
elif self.valeur == '^':
self.valeur = self.gauche.evalue() ** self.droit.evalue()
return self.valeur
def __str__(self):
"""Affiche l'expression mathématique d'un arbre binaire"""
if self.gauche is None and self.droit is None:
return str(self.valeur)
expr = ""
if self.gauche is not None:
if self.gauche.valeur in ['+', '*']:
expr += "(" + str(self.gauche) + ")"
else:
expr += str(self.gauche)
expr += " " + str(self.valeur) + " "
if self.droit is not None:
if self.droit.valeur in ['+', '*']:
expr += "(" + str(self.droit) + ")"
else:
expr += str(self.droit)
return expr
"""Renvoie l'expression mathématique d'un arbre binaire"""
if self.valeur != '+' and self.valeur != '*' and self.valeur != '/' and self.valeur != '-' and self.valeur != '^':
return self.valeur
else:
return "(" + str(self.gauche.__str__()) + str(self.valeur) + str(self.droit.__str__()) + ")"
def npi2tree(ch):
"""Convertit une expression en notation polonaise inversée à un arbre binaire"""
"""Renvoie un arbre binaire contenant une expression mathématique
via une expression en notation polonaise inversée"""
ch = ch.split()
Expr = Pile_chaine()
for elmt in ch:
if elmt == '*' or elmt == '+':
if elmt == '*' or elmt == '+' or elmt == '/' or elmt == '-' or elmt == '^':
exp = Expression(elmt, Expr.depiler(), Expr.depiler())
Expr.empiler(exp)
else:
Expr.empiler(Expression(int(elmt), None, None))
return Expr.sommet()
def calculer():
"""Affiche l'expression ainsi que son résultat dans l'interface Tkinter"""
déception = ["Peut mieux faire.",

Loading…
Cancel
Save