Evaluer une expression algébrique contenue dans un string

Présentation
Ce code est un analyseur/resolveur d'expressions algébriques,incorporé dans un composant OCX


Ce source est intéressant car il montre comment font les compilateurs pour évaluer des expressions algébriques

On fourni au composant une chaîne de caractères, celui-ci l'analyse en vue de la transformer en notation polonaise inversée dans fonction PostFixIt.

Cette partie fait appel massivement à la récurrence (Une fonction appelle un fonction qui elle même , a un moment ou un autre va appeler la première).

Ensuite cette chaîne est exécutée à l'aide d'une pile LIFO (Last In/First Out) dans la fonction DoCalcule

Le programme est capable d'analyser,un niveau de parenthèses quelconque


  • les quatre opérations de base , Puissance

les fonctions :

  • ABS(X) 'valeur absolue
  • AR0(X) / RD0(X) 'arrondi à l'entier
  • AR1(X) / RD1(X) 'arrondi à une décimale
  • AR2(X) / RD2(X) 'arrondi à deux décimales
  • AR3(X) / RD3(X) 'arrondi à trois décimales
  • AR4(X) / RD4(X) 'arrondi à quatre décimales
  • ATN(X) 'ArcTangente
  • COS(X) 'Cosinus
  • EXP(X) 'Exponentielle

  • FIX(X) 'tronquage de la partie entière
  • INT(X) 'Partie entière
  • LOG(X) 'Logarithme
  • SIN(X) 'sinus
  • TAN(X) 'tangente

l'évaluation d'expressions booléennes :
  • NOT expression 'Négation
  • OR / OU 'Or
  • AND / ET 'And

  • > 'Supérieur strictement
  • >= / => 'Supérieur ou Egal
  • = 'égal
  • <= / =< 'Inferieur ou egal
  • < 'inferieur strictement
Téléchargement
0  0 
Téléchargé 20 fois Voir les 6 commentaires
Détails
Catégories : Maths et algorithmes
Avatar de Delbeke
Membre expert
Voir tous les téléchargements de l'auteur
Licence : Non renseignée
Date de mise en ligne : 14 novembre 2010




Avatar de Delbeke Delbeke - Membre expert https://www.developpez.com
le 25/07/2006 à 0:42
Bon, j'ai l'impression que mon ocx genial n'est pas si genial que çà
Il n'a pas l'air d'interesser grand monde

Moi il me sert tout le temps. par exemple dans une application de facturation, je ne demande plus un simple nombre pour la quantié.
Si il s' agit de facturer 2 palettes de 45 colis , chaque colis contenant 16 items, l'operateur de saisie compose 2*45*16 directement dans la case quantité. moi ca me paraissait génial mais bof.
Avatar de AlainTech AlainTech - Modérateur https://www.developpez.com
le 25/07/2006 à 0:48
Ce n'est pas parce que personne ne réagit que ce n'est pas intéressant.

Beaucoup de gens viennent ici sans jamais poster. On ne sait donc pas quel est le nombre de personnes qu'une contribution quelconque peut intéresser.
Avatar de Delbeke Delbeke - Membre expert https://www.developpez.com
le 25/07/2006 à 0:50
Merci de me remonter le moral
Avatar de Yanos Yanos - Membre régulier https://www.developpez.com
le 22/08/2006 à 9:18
il n'y aurait pas le logarithme néperien par hazard?
Avatar de Delbeke Delbeke - Membre expert https://www.developpez.com
le 22/08/2006 à 9:56
Non, car la resolution des fonctions est prise en charge par les fonctions de VB. Mais il reste toujurs la possibilité de calculer le logarithme néperien avec les fonctions de Vb, donc on pourait l'implementer tres facilement
Avatar de Delbeke Delbeke - Membre expert https://www.developpez.com
le 22/08/2006 à 11:52
apres une rapide recherche sur l'aide de vb
voici comment calculer le log népérien

Code : Sélectionner tout
1
2
3
4
Public Function Log10(X)
   Log10 = Log(X) / Log(10#)
End Function
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.