Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

INTERPRETATION DE COMMANDE : CALCULATRICE ET DESSIN DE GRAPHIQUE À PARTIR DE SON EQUATION


Information sur la source

Catégorie :Maths & Algorithmes Classé sous : calculatrice, graphe, analyseur, syntaxique Niveau : Initié Date de création : 29/04/2007 Date de mise à jour : 07/05/2007 10:49:59 Vu / téléchargé: 4 548 / 423

Note :
Aucune note

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
        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.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

07 mai 2007 10:49:59 :
- J'ai trouvé un bug sérieux! Lorsqu'on utilise le format de nombre en puissance de 10 (ex. : 12e+04), le résultat n'est plus fiable. je donne un exemple : 1+2e-01 a été evaluée comme (1+2e)-01 et comme 2e vaut 2, le résultat est tout différent. Mais quand on isole l'expression en puissance de 10 entre parenthèses, le problème est resolu. Pour être correcte, il faut donc ecrire par exemple : 1+(2e-01) J'ai alors integré un partie de code qui verifie que toutes les expressions en puissance de 10 soient bien isolées entre parenthèses, et cela suffit largement à eviter les erreurs parce que les formes XXe+xx ne sont jamais utilisées de manière interne. Voila pour ce bug! - J'ai aussi affiché un indicateur de progression pendant les opérations. Ce n'est pas un contrôle progressbar. Il s'agit d'un compte à rebours des nombres opérations qui restent à faire. Et desormais, vous pouvez annuler toutes les opérations en appuyant sur ECHAP - 3 nouveaux fichiers sont inclus au projet : manifest.h, manifest.rc, manifest.xml. Ils sont là pour donner à la fenêtre le style XP - J'ai inclu une nouvelle capture d'écran dans le ZIP, voici son equation : _sin(&t)*_cos(3*&t) : _sin(3*&t)*_cos(2*&t); t=-_pi-1 : _pi+1 : _pi/100 C'est une équation paramétrique avec X = sin(t)*cos(3t) Y = sin(3t)*cos(2t) t = [-pi-1,pi+1] Et enfin, j'ai inclu l'exe toute prête, sans dépendance j'espère! Je rappelle que le code se compile en C++Builder. J'utilise la version 6.

Commentaires et avis

signaler à un administrateur
Commentaire de Joky le 03/05/2007 07:25:23

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

signaler à un administrateur
Commentaire de Joky le 03/05/2007 07:27:03

Ah ok
VCL lol, C++ Builder
Travail Mâché à moitié.

signaler à un administrateur
Commentaire de spyusers le 15/05/2007 20:00:50

c'est bon

signaler à un administrateur
Commentaire de fabricelepro le 11/10/2008 13:33:42

salut
je pense pas que les utilisatuers aient besoin d'un programme si compliqué commen le tien

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

traceur de graphe en C [ par domain ] Bonjour,Je dois réaliser un traceur de graphe en C avec:- analyseur lexical- analyseur sémantique- évaluateur- afficheurje pense avoir assez bien comp analyseur lexical et syntaxique pour un langage pascal programmer en c++ [ par talzou ] j'ai besoins d'un analyseur lexical et syntaxique de langage pascal programmer en devc++merci analyseur lexical et syntaxique [ par talzou ] salut si vous pouvez m'aider j'ai besoins d'un code source pour un analyseur lexical de langage pascal programmer en c ou c++ merci analyseur lexical &syntaxique en c [ par amfa ] salut ,je cherche le code source de lanalyseur lexical & syntaxique en langage c,si vous avez qlq chose sur ce sujet ,aidez moi,merci davance un analyseur lexical de turbo pascal en c [ par linkolen ] slt j un tp de compilation je ne sais pas koa faire j besoin d'un program en c qui fait l'analyse lexical et syntaxique d'un pgm pascal (lex et yacc d calculatrice [ par gambas1733 ] Bonjour voila je fais une claculatrice IHM et j'aurais besoin d'un conde pour convertir de binaire a decimal et inversement il me faut utiliser comme analyseur!!! [ par SAADOULI ] je veux écrire un analyseur lexical pour le langage C en se basant sur une def d'une matrice d'etat quelqu' un peut m'aider et merci d'avance programme en c++ builder [ par kheiraasn ] bonsoir a tous ...vos pouvez m'aider pour programmer un analyseur lexicale ou analyseur syntaxique on utilisons les automates (c++ builder)et merci a Calculatrice BCD [ par meetmoi ] Bonjour,Je dois faire, pour un cours, un calculatrice BCD et je ne sais même pas par où commencer. La calculatrice doit prendre une chaine de caractèr Algorithme d'affichage de graphe [ par vidalt ] Bonjour tout le monde !! :)J'ai pas mal farfouillé dans les forums pour essayer de trouver une implémentation simple d'algo affichant un graphe. Voila


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,733 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.