Interpretation de commande : calculatrice et dessin de graphique à partir de son equation

Soyez le premier à donner votre avis sur cette source.

Vue 9 077 fois - Téléchargée 668 fois

Description

Bonjour à toutes et à tous.
Bon! voici le premier programme que je publie sur cppfrance.
Il s'agit d'un analyseur syntaxique. J'ai trouvé la calculatrice de Windows un peu
ennuyante, mais c'est juste mon avis.
Bref, avec ce programme, vous avez une calculatrice et un support puissant pour
dessiner des graphiques à partir de la saisie de son equation.

Voici quelques exemples :
2+4*2^3-7/8+5*9+10*40-9^2
58/1000*1024/89+21-24*42/12

Les operations sont effectuées suivant la priorité des operateurs.
Priorité 0 : ^
Priorité 1 : * et /
Priorité 2 : + et -

Les parenthèses ne sont necessaires que lorsque vous jugez qu'elles le sont vraiment :
1*2+3 est alors différent de 1*(2+3), puisque 1*2+3 sera evaluée comme (1*2)+3

Ce programme gère plusieurs fonctions standard (log, ln, sin, cos, ...). Pour ajouter votre propre fonction, il faut
juste ajouter quelques lignes de codes là où il le faut.

De la même facon que les fonctions, des constantes predefinies sont utilisées par le programme.
Elles sont :
pi : la valeur de pi = 3.14...
maxint : la valeur maximale que peut avoir un entier
ans : comme la plupart des calculatrices, ans represente la dernière valeur calculée.
Pour obtenir sa valeur actuelle, il suffit juste de taper _ans dans la fenêtre
de saisie d'expression
(Remarque : _ans n'est utilisée qu'en mode calculatrice)

Une seule règle pour les fonctions et les constantes:
Elles doivent commencer par un _
exemple : _sin(2), _exp(_sin(_tan(45)))
_pi, _maxint, _ans

Et pour les graphiques alors???

C'est simple, il faut juste utiliser une variable, définir ses bornes et sa valeur d'incrementation.
Deux règles pour les variables :
- Elles doivent commencer par un &
exemple : &x^2
- Elles doivent être declarées après l'expression, separée de cette dernière par un ;
exemple : &x^2; x=-_pi:_pi:0.1
Vous pouvez alors utiliser tout nom de variable dès qu'il commence par &
En particulier, vous pouvez utiliser par exemple la variable sin dans l'expression 1/&sin*_sin(&sin); sin = -1:1:0.05

Vous pouvez expliciter la declaration de variable de la facon :
&x^2; x = -2*6/89 : _abs(_sin(6/89)) : _pi/300
Bien sur, vous pouvez utiliser toute expression correcte dans la declaration de la variable,
sans toutefois y integrer encore une autre variable
exemple : &x^2; x = (&t;t=-1:1:0.1) : (2*&t;t=-1:1:0.1) : 0.1 n'est pas correcte

Important : Il n'y a pas de distinction entre minuscules et majuscules

Pour les equations parametriques, on ecrit :
Expression1 : Expression2 ; Variable = BorneInferieure : BorneSuperieure : Incrementation
exemple : &t*_sin(2*&t):_cos(&t);t=-10*_pi:10*_pi:0.1
sera interprété comme
X = &t*_sin(2*&t)
Y = _cos(&t)
avec t = [-10pi,10pi] avec un pas d'incrementation 0.05

Les espaces sont ignorés : 2 3 * 1 4 ^ 21 sera evaluée comme 23*14^21

Dans tous mes codes, j'ai pris l'habitude de mettre tous les identifiants en anglais.

Conclusion :


Je travaille avec C++Builder 6 et j'ai profité au maximum de la maniabilité de la classe AnsiString pour manipuler toutes les chaines. Il suffit juste d'ouvrir le projet MathConsole.bpr dans C++Builder et de compiler le tout.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
21
Date d'inscription
vendredi 7 décembre 2012
Statut
Membre
Dernière intervention
3 janvier 2009

salut
je pense pas que les utilisatuers aient besoin d'un programme si compliqué commen le tien
Messages postés
1
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
15 mai 2007

c'est bon
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Ah ok
VCL lol, C++ Builder
Travail Mâché à moitié.
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Je comprend pas, pourquoi aucun commentaire ?
La capture est déjà très attirante.
Je m'attaque au code dans l'après-midi.
Je vais en cours là :D

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.