[C++] Evaluateur d'expressions algebriques

 Evaluateur d'expressions algebriques [C++] - Programmation

Marsh Posté le 28-05-2001 à 16:37:46    

Salut a tous,
 
Dans le cadre de mon projet, je dois evaluer une expression algebrique plusieurs millions de fois, et donc je pense que la structure la plus indiquee est un arbre binaire.
 
Le seul probleme c'est que j'ai vraiment pas le temps de m'occuper de ca actuellement (rush time :(), et donc je serai infiniment reconnaissant si quelqu'un pouvait me DONNER (oui oui :D) une classe toute faite qui fonctionne (j'ai cherche sur le net...rien).
 
Et je dois preciser que j'ai besoin d'operateurs unaires et binaires.  
Merci a tous de votre comprehension.

Reply

Marsh Posté le 28-05-2001 à 16:37:46   

Reply

Marsh Posté le 28-05-2001 à 18:39:28    

tu peut preciser plus l'énoncé du projet ?

Reply

Marsh Posté le 28-05-2001 à 19:03:07    

Je dois creer une matrice cubique type 256x256x256, dont chaque valeur est le resultat d'une formule type "abs(a*cos(b))/2". Cette formule est la meme pour chaque point de la matrice.
Bien evidemment les valeurs des variables changent a chaque point.

Reply

Marsh Posté le 28-05-2001 à 19:05:12    

peut-tu presiser le type d'arbre que tu veut :
-avec template ou d'un type specifique  
-pointeur vers le pere ou non
-arbre binaire de tri ou pas
-kel info doivent contenir les noeud
-tu veut juste une structure de base ou une avec deja certain operateur inclus (tel que =,addition de 2 arbre,...)
-kel type de constructeur tu as besoin
-...

Reply

Marsh Posté le 28-05-2001 à 19:10:05    

En fait j'ai juste besoin d'un constructeur d'arbre, et d'un evaluateur.
 
L'expression abs(a*cos(b))/2 s'ecrit :
         /
       / \
   abs       2
  /
 *
/\
a cos
    /
  b
et l'evaluation se fait en parcours infixe.
 
Rien de plus :hello:
(pas besoin d'operations sur les arbres)

 

[edit]--Message édité par tgrx--[/edit]

Reply

Marsh Posté le 28-05-2001 à 19:26:40    

donc si je comprend bien tu veut que chaque point de la matrice contienne le resultat de la formule abs(a*cos(b)))/2 et pour ca tu veut mettre la formule dans un arbre???
pq tu ne fait pas une bete fonction :
float eval (float a,float b)
{
   return abs(a*cos(b))/2;
}
??
corrige moi si g mal compris ta kestion ;)

Reply

Marsh Posté le 29-05-2001 à 00:34:37    

il a dit: une formule type...
Donc, c'est peut etre pas la formule, et elle est peut etre pas constante pour tous les elements de la matrice.
A+,


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- No jab ? No job ! -- (╯°□°)╯︵ ┻━┻
Reply

Marsh Posté le 29-05-2001 à 10:33:49    

Ben le truc c'est que la formule c'est l'utilisateur qui la rentre au lancement du programme, donc je peux pas l'integrer dans le code.
En revanche c'est la meme pour tous les elements de la matrice, donc en gros je veux construire l'arbre une fois pour toutes, en ensuite l'evaluer tranquillement pour chaque element de la matrice... :hello:

Reply

Marsh Posté le 29-05-2001 à 10:48:39    

gilou comme le monsieur le dit et le repete la formule est la meme pour tous les points de la matrice ;)
le faite que l'utilisateur rentre la formule au clavier rend effecivement l'utilisation de fonction moins pratique :)
derniere kestion avant de partir a la recherche dans les archives pour esayer de te trouver ca tu veut un arbre coder recursivement ou lineaire avec stack?

Reply

Marsh Posté le 29-05-2001 à 10:51:14    

TukMaster> m'en fiche de la structure, je veux juste une evaluation assez rapide.
Je pense que l'arbre est un plus plus rapide, mais un systeme de piles est ok aussi... :hello:

Reply

Marsh Posté le 29-05-2001 à 10:51:14   

Reply

Marsh Posté le 29-05-2001 à 10:55:49    

tu as un endroit ou je peut te send le ficher ? d'ici 24h je devrai l'avoir :)

Reply

Marsh Posté le 29-05-2001 à 10:58:48    

Mon mail : prekipik@club-internet.fr ;)
 
Merci beaucoup tukmaster666 :):):)
 
 
:hello:

Reply

Marsh Posté le 30-05-2001 à 10:00:13    

tukmaster> Bien recu :)
Tu viens de me sauver la vie.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed