IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 6 fois
Vote des utilisateurs
0 
0 
Détails
Licence : Non renseignée
Mise en ligne le 14 novembre 2010
Langue : Français
Référencé dans
Navigation

Evaluer une expression algébrique contenue dans un string

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
Avatar de 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
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
Membre expert https://www.developpez.com
Le 25/07/2006 à 0:50
Merci de me remonter le moral
Avatar de 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
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
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.