|
@ -1,7 +1,8 @@ |
|
|
# BELLYNCK Manon |
|
|
# BELLYNCK Manon |
|
|
# GUILLAUMIN-TORRES Ambre |
|
|
# GUILLAUMIN-TORRES Ambre |
|
|
# COVIN Clara |
|
|
# COVIN Clara |
|
|
from Pile.py import Pile_lst as Pile |
|
|
|
|
|
|
|
|
from Pile import Pile_lst as Pile |
|
|
import tkinter as tk |
|
|
import tkinter as tk |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -78,8 +79,16 @@ class Expression: |
|
|
|
|
|
|
|
|
def evaluer_expression(): |
|
|
def evaluer_expression(): |
|
|
expression = entry.get() |
|
|
expression = entry.get() |
|
|
arbre = Expression.npi2tree(expression.split()) |
|
|
elements = expression.split() |
|
|
|
|
|
if not elements: |
|
|
|
|
|
label_2.config(text="Erreur: Expression vide") |
|
|
|
|
|
return |
|
|
|
|
|
arbre = Expression.npi2tree(elements) |
|
|
|
|
|
if arbre is None: |
|
|
|
|
|
label_2.config(text="Erreur: Expression incorrecte") |
|
|
|
|
|
else: |
|
|
resultat = arbre.evalue() |
|
|
resultat = arbre.evalue() |
|
|
|
|
|
label_2.config(text=f"Résultat: {resultat}") # si l'expression est incorrecte |
|
|
|
|
|
|
|
|
# Label pour l'interface |
|
|
# Label pour l'interface |
|
|
label_1 = tk.Label(fen, text="Entrez l'expression :") |
|
|
label_1 = tk.Label(fen, text="Entrez l'expression :") |
|
@ -91,11 +100,11 @@ entry.grid() |
|
|
|
|
|
|
|
|
# Bouton pour calculer l'expression |
|
|
# Bouton pour calculer l'expression |
|
|
btn_calculer = tk.Button(fen, text="Calculer", command=evaluer_expression) |
|
|
btn_calculer = tk.Button(fen, text="Calculer", command=evaluer_expression) |
|
|
btn_calculer.pack() |
|
|
btn_calculer.grid(row=4, column=0, columnspan=2) |
|
|
|
|
|
|
|
|
# Label pour afficher le résultat |
|
|
# Label pour afficher le résultat |
|
|
label_2 = tk.Label(fen, text="Résultat: ") |
|
|
label_2 = tk.Label(fen, text="Résultat: ") |
|
|
label_2.grid() |
|
|
label_2.grid(row=5, column=0, columnspan=2) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
label_2 = tk.Label(fen, text=evaluer_expression().resultat) |
|
|
label_2 = tk.Label(fen, text=evaluer_expression().resultat) |
|
@ -122,7 +131,29 @@ assert exp.evalue() == 24 |
|
|
exp = Expression('-', Expression(45,None,None), Expression(3,None,None))#ça marche comme ça |
|
|
exp = Expression('-', Expression(45,None,None), Expression(3,None,None))#ça marche comme ça |
|
|
assert exp.evalue() == 42 |
|
|
assert exp.evalue() == 42 |
|
|
|
|
|
|
|
|
liste_npi = ["6", "4", "3", "+", "*"] # Correspond à 6 * (4 + 3) |
|
|
lst = ["6", "4", "3", "+", "*"] # Correspond à 6 * (4 + 3) |
|
|
arbre = Expression.npi2tree(liste_npi) # Convertit la liste en un arbre |
|
|
arbre = Expression.npi2tree(lst) # Convertit la liste en un arbre |
|
|
|
|
|
|
|
|
print(arbre.evalue()) # Affiche : 42 |
|
|
print(arbre.evalue()) # Affiche : 42 |
|
|
|
|
|
|
|
|
|
|
|
# Test: Expression simple de somme |
|
|
|
|
|
exp = Expression('+', Expression(8, None, None), Expression(3, None, None)) |
|
|
|
|
|
assert exp.evalue() == 11, f"Test échoué: {exp.evalue()}" # Vérifie que 8 + 3 = 11 |
|
|
|
|
|
|
|
|
|
|
|
# Test: Expression simple de multiplication |
|
|
|
|
|
exp = Expression('*', Expression(4, None, None), Expression(5, None, None)) |
|
|
|
|
|
assert exp.evalue() == 20, f"Test échoué: {exp.evalue()}" # Vérifie que 4 * 5 = 20 |
|
|
|
|
|
|
|
|
|
|
|
# Test: Expression avec une soustraction |
|
|
|
|
|
exp = Expression('-', Expression(20, None, None), Expression(5, None, None)) |
|
|
|
|
|
assert exp.evalue() == 15, f"Test échoué: {exp.evalue()}" # Vérifie que 20 - 5 = 15 |
|
|
|
|
|
|
|
|
|
|
|
# Test: Test d'une expression valide en NPI (notation polonaise inversée) |
|
|
|
|
|
# Correspond à: 6 * (4 + 3) |
|
|
|
|
|
lst = ["6", "4", "3", "+", "*"] |
|
|
|
|
|
arbre = Expression.npi2tree(lst) |
|
|
|
|
|
assert arbre.evalue() == 42, f"Test échoué: {arbre.evalue()}" # Vérifie que 6 * (4 + 3) = 42 |
|
|
|
|
|
|
|
|
|
|
|
# Test: Expression avec division |
|
|
|
|
|
exp = Expression('/', Expression(10, None, None), Expression(2, None, None)) |
|
|
|
|
|
assert exp.evalue() == 5, f"Test échoué: {exp.evalue()}" # Vérifie que 10 / 2 = 5 |