Download Programmation Syllabus d`exercices

Transcript
64
– chaque élément est un string ;
– chaque élément représente soit un entier, soit un opérateur ;
– les éléments se trouvent dans la liste suivant l’ordre de la notation polonaise (en d’autres
termes, nous supposons que la liste est une expression valide).
Voici la liste des opérations possibles avec leurs représentations dans la liste :
– "+" : somme
– "-" : différence
– "*" : produit
– "/" : division entière
– "%" : reste de la division
Expression :
12 + 3 - 4 * 2
Notation polonaise correspondante :
- + 12 3 * 4 2
Représentation sous forme de liste :
["-", "+", "12", "3", "*", "4", "2"]
Résultat: 7
F IGURE 15.2 – Exemple : notation polonaise, représentation de l’expression sous forme d’une
liste.
Vous pouvez supposer que la liste est correctement structurée, c’est-à-dire que l’ordre et le
nombre d’éléments sont corrects. Votre fonction devra toutefois signaler par le biais d’une exception l’éventualité d’une division par zéro.
Essayez d’utiliser le moins de if-else possible.
Vous ne pouvez pas utiliser la fonction eval() de Python.
Vous pouvez définir d’autres fonctions et écrire du code en plus pour simplifier le code de la
fonction evaluate().
Voici encore quelques exemples de liste expression :
Expression:
1 + 1 + 1 + 1 + 1
Représentation sous forme d’une liste:
["+","+","+","+", "1", "1", "1", "1", "1"]
Résultat: 5
Expression:
((5 - 3) + (1 % 2)) * 8
Représentation sous forme d’une liste:
["*", "+", "-", "5", "3", "%", "1", "2", "8"]
Résultat: 24
F IGURE 15.3 – Exemples.
Ex. 15.11. * (Examen Janvier 2013)
Le problème de partition consiste à découper un ensemble d’entiers L en deux partitions L1 et
L2 tel que la somme des éléments du premier ensemble soit égale à la somme des éléments du
second.