Calculatrice particilière

Fermé
Gryzzly - 15 déc. 2005 à 11:28
 solange - 15 déc. 2005 à 12:21
Bonjour,

je dois programmer une calculatrice particulière dont voici un exemple d'utilisation:


eval + 1 2 
                 1+2->3 
set x= 100 
                 x=100 
eval - * 2 x 1 
               2*x-1->199 
set f(x)= - 3 * x y 
                f(x)=3*x-y 
eval f@1 + 1 x 
                f(x+1)=303-y 
set y=10 
               y=10 
eval f@1 + 1 x 
                f(x+1)=293 
set g(x,y) = + 1 * x - 4 f@2 x - y 1 
                       g(x,y)=1+x*(4-f(x,y-1))


Le terme "set" permet de déclarer des variables (nom +valeur) ou des fonctions (nom + nb parametres + parametres + arbre) ou de les evaluer "eval".
L'evaluation est totale lorsque tous les termes de l'expression sont des réel ou partiels sinon.
J'ai codé les set et eval pour des expression simples mais je ne n' y arrive pas avec les fonctions.

Un ami m'a suggéré cette manière de procéder mais je ne peux le joindre (car à l'étranger).

Voici:
Lorsque tu évalues un arbre, tu parcours les variables et tu regardes si dans ta table des symboles tu as cet élément. 

Dans le cas d'une fonction, une solution qui peut être adoptée et de créer une table des symboles pour la fonction. 

Lorsque tu parcours l'arbre de la fonction, pour toutes les variables, tu regardes d'abord dans la table des symboles de la fonction, si tu ne trouves rien tu regardes dans la table générale des symboles... 

Finalement, lorsque tu appelles une fonction, tu inséreras les variables dans la table de la fonction. 

Ainsi, lorsque tu fais le calcul Code: 
f@1 + 1 x 
tu peux le voir comme étant: 

Insére dans la table des symboles de f le couple d'éléments Code: 
(x,eval + 1 x) 
avec une recherche pour l'évaluation qui lui va regarder dans la table de f (ne va rien trouver puisque x n'y est pas encore) et ira chercher dans la table générale. 

A la fin des courses, tu obtiendras un couple (x, arbre de x (evalue ou non)) qui sera dans ta table f. 

Lorsque tu appelleras f, tu remplaceras dans ton arbre toutes les occurences de x par ce nouvel arbre. 

Finalement lorsque f se termine, tu détruis la table de f... 

C'est, je pense la façon la plus élégante de le faire... Après faut voir si ton implémentation courante s'y prête correctement 


Si avec cela quelqu'un pouvait m'aider,ce serait sympa .

Merci d'avance
A voir également:

1 réponse

je veus une aide sur la programmation d'un rapport en visual basic
0