Browse Source

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

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

40
Calc.py

@ -11,44 +11,44 @@ class Expression:
self.droit = droit self.droit = droit
def evalue(self): 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 == '+': if self.valeur == '+':
self.valeur = self.gauche.evalue() + self.droit.evalue() self.valeur = self.gauche.evalue() + self.droit.evalue()
if self.valeur == '*': elif self.valeur == '*':
self.valeur = self.gauche.evalue() * self.droit.evalue() 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 return self.valeur
def __str__(self): def __str__(self):
"""Affiche l'expression mathématique d'un arbre binaire""" """Renvoie l'expression mathématique d'un arbre binaire"""
if self.gauche is None and self.droit is None: if self.valeur != '+' and self.valeur != '*' and self.valeur != '/' and self.valeur != '-' and self.valeur != '^':
return str(self.valeur) return self.valeur
expr = "" else:
if self.gauche is not None: return "(" + str(self.gauche.__str__()) + str(self.valeur) + str(self.droit.__str__()) + ")"
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
def npi2tree(ch): 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() ch = ch.split()
Expr = Pile_chaine() Expr = Pile_chaine()
for elmt in ch: 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()) exp = Expression(elmt, Expr.depiler(), Expr.depiler())
Expr.empiler(exp) Expr.empiler(exp)
else: else:
Expr.empiler(Expression(int(elmt), None, None)) Expr.empiler(Expression(int(elmt), None, None))
return Expr.sommet() return Expr.sommet()
def calculer(): def calculer():
"""Affiche l'expression ainsi que son résultat dans l'interface Tkinter""" """Affiche l'expression ainsi que son résultat dans l'interface Tkinter"""
déception = ["Peut mieux faire.", déception = ["Peut mieux faire.",

Loading…
Cancel
Save