Browse Source

les nombres négatifs fonctionnent mieux :D

master
bollet.c 7 months ago
parent
commit
6a6140e47a
  1. 17
      infixe.py
  2. 2
      test_interface.py

17
infixe.py

@ -7,8 +7,8 @@ def infixe2npi(liste_en_infixe):
pile_op = Pile()
sortie = []
fonctions = ["sin","cos","tan","sqrt", "opp"]
operateurs = ["+", "-", "*", "/", "^"]
fonctions = ["sin","cos","tan","sqrt"]
operateurs = ["+", "-", "*", "/", "^","opp"]
priorite = {"sin":1,
"opp":1,
"^":1,
@ -28,7 +28,7 @@ def infixe2npi(liste_en_infixe):
print(40*"=")
for index_token, token in enumerate(liste_en_infixe):
print(20*"-")
print("tour de boucle n°",index_token, "\npile_op \t",pile_op, "\nsortie \t", sortie)
print("token", token)
#nombre
if estUnNombre(token):
if sortie != []:
@ -36,17 +36,22 @@ def infixe2npi(liste_en_infixe):
#mul. implicite
sortie.append(token)
sortie.append("*")
print("c'est un nombre et il est dans le cas pile_op.est_vide()")
else:
if last_token == pile_op.sommet():
print(last_token, pile_op.sommet())
if last_token == pile_op.sommet() or pile_op.sommet() == "opp":
#opération binaire normale ou fonction (avec avant elle ultimement une opération binaire)
sortie.append(token)
print("c'est un nombre et il est dans le cas last_token == pile_op.sommet()")
if last_token == sortie[-1]:
print("c'est un nombre et il est dans le cas last_token == sortie[-1]")
#on a affaire à une expression (chiffre (... 2), opération (... +), fonction (... fx)) qui est in fine un nombre
cleanFx(pile_op, sortie)
sortie.append(token)
sortie.append("*")
else:
sortie.append(token)
print("c'est un nombre et il est dans le cas sortie == []")
#fonction
elif token in fonctions:
if sortie != []:
@ -55,7 +60,7 @@ def infixe2npi(liste_en_infixe):
pile_op.empiler("*")
pile_op.empiler(token)
else:
if last_token == pile_op.sommet():
if last_token == pile_op.sommet() or pile_op.sommet() == "opp":
#composition de fonctions, ou fonction qui suit un opérateur
pile_op.empiler(token) #normal
if last_token == sortie[-1]:
@ -94,7 +99,7 @@ def infixe2npi(liste_en_infixe):
pile_op.empiler("*")
pile_op.empiler(token)
else:
if last_token == pile_op.sommet():
if last_token == pile_op.sommet() or pile_op.sommet() == "opp":
#parenthèse qui suit une fonction ou parenthèse normale
pile_op.empiler(token) #normal
if last_token == sortie[-1]:

2
test_interface.py

@ -242,7 +242,7 @@ class Interface(tk.Frame):
arbre_expr = npi2tree(lst_expr, self.etat_affichage)
self.affichage_expression.config(text = str(arbre_expr) + "=" + str(arbre_expr.evalue()))
except IndexError:
messagebox.showerror("Erreur","Erreur de syntaxe")
messagebox.showerror("Erreur","Erreur de syntaxe ici")
except ValueError:
#faire un truc plus beau
messagebox.showerror("Saisie invalide", "Vous n'avez pas entré un nombre, ou la fonction est inconnue.")

Loading…
Cancel
Save