IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Générateurs de compilateur Discussion :

évaluateur de formule mathématique


Sujet :

Générateurs de compilateur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 7
    Points : 12
    Points
    12
    Par défaut [Resolu] évaluateur de formule mathématique
    : je recherche un évaluateur de formule mathématique en C :
    on passerait en argument une chaîne de caractère, ex. "3.2 + 3*5^1", et il en resortirait un float, dans ex. "18.2"
    Merci d'avance

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 235
    Points : 134
    Points
    134
    Par défaut
    salut,
    il faut décomposer la chaîne de caractères nombre par nombre et isoler les signes puis les convertir en float atof <stdlib.h>

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 92
    Points : 84
    Points
    84
    Par défaut
    Haypo ne fait-il pas une calculatrice??

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    Citation Envoyé par cmarsc
    salut,
    il faut décomposer la chaîne de caractères nombre par nombre et isoler les signes puis les convertir en float atof <stdlib.h>
    C'est un peu court jeune homme, on aurrait pu dire en somme bien des choses... etc

  5. #5
    Membre émérite

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    Si j'ai écrit une calto : HaypoCALC.

    Pour écrire une calto il faut :

    - Un format de stockage de donnée. J'ai choisi l'arbre n-aire avec une notation pré-fixée. Explication sur :
    http://www.haypocalc.com/prog/expression.php

    - Un analyseur lexical qui va découper "3.2 + 3*5^1" en :
    REAL = 3.2
    OP = opADD
    INT = 3
    OP = opMUL
    INT = 5
    OP = opPOW
    INT = 1

    J'ai choisi la méthode "tout réécrire à la main". C'est pas mal, mais il faut bcp de temps pour l'écrire. Le mieux est d'utiliser Lex ou Flex.

    Tu peux déjà éliminer plusieurs erreurs à ce stade : deux nombres qui se suivent, deux opérateurs qui se suivent, etc.

    - Un analyseur syntaxique qui traduire ce qu'à compris l'analyseur lexicale en une expression dans le format qui tu auras choisis. En arbre n-aire ça donne : (+ 3.2 (* 3 (^ 5 1))).

    J'ai aussi tout écrit à la main, mais Yacc ou Bison font l'affaire.

    - Une fonction qui va évaluer cette expression. Si tu te limites aux opérateurs de calcul simple (+ - * / ^), c'est vite écrit. Pour a^b, prend la fonction pow de math.h.

    Info : Lex et Yacc ne sont pas libre, Flex et Bison le sont.

    Envoie-moi un p'tit mail si tu veux + d'info !!!

    @+ Haypo

  6. #6
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 208
    Points : 11 688
    Points
    11 688
    Par défaut
    Tu as aussi Coco/R. Je suis entrain de me familiariser avec:
    Coco/R is a tool for generating compilers/interpreters. Instead of writing your scanner and parser all by yourself, you write a grammar expressed in augmented EBNF and Coco/R generates a scanner and parser for you. Coco/R combines the functionality of the well-known tools lex and Yacc, to form an extremely easy to use compiler generator. There are versions of Coco/R for C, C++, Java, Oberon, Pascal, ...
    Je le trouve bien car il combine les fonctionnalitées de Lex et Yacc et il est assez simple d'utilisation. J'arrive déjà à identifier différents types de valeurs dans un fichier texte (float, hexa, decimal) et ça ne fait pas longtemps que je me suis mis (2h, le temps de comprendre un peu).

    Pour Haypo, pourquoi tu as tout réécrit à la main ? C'est parce que Bison et Flex t'obligeait à faire des applications gratuites, du fait de leurs licences ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Chaines de formules mathématiques
    Par Abdou_moujar dans le forum Windows Forms
    Réponses: 8
    Dernier message: 20/05/2008, 16h30
  2. chaine de caractère + formule mathématique
    Par wiss20000 dans le forum Langage
    Réponses: 4
    Dernier message: 09/03/2007, 15h14
  3. Editeur de formules mathématiques
    Par otb82 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 21/08/2006, 12h43
  4. formule mathématique
    Par fakhri dans le forum Oracle
    Réponses: 1
    Dernier message: 12/11/2005, 15h44
  5. Déterminer Algo pour une formule mathématique
    Par jekyll_omiwane dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 07/01/2005, 18h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo