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

C++ Discussion :

Calculer valeur d'une formule dynamique


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut Calculer valeur d'une formule dynamique
    Bonjour tout le monde,
    En fait, je récupère une formule saisie par l'utilisateur depuis un fichier texte.
    Cette formule peut être de la forme : ((WIDHT+5)*5/2)-(LARG/2).
    Après avoir récupéré cette formule, je dois calculer sa valeur en remplaçant les variable WIDTH et LARG par leur valeur respectives que j'ai dans mon code source (Ce sont 2 constantes en fait).
    Mon problème c'est je récupère cette formule sous format de chaîne String et j'arrive pas à la traduire en une variable double.
    Sachant que l'utilisateur peut taper la formule qu'il veut mais toujours en bon format.
    Je vous remercie de votre précieuse collaboration.
    Bien cordialement

  2. #2
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Il ne reste qu'a ajouter les variables a http://www.developpez.net/forums/d38...s/#post2356000
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  3. #3
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    Bonjour,
    Citation Envoyé par mercure07 Voir le message
    je récupère cette formule sous format de chaîne String et j'arrive pas à la traduire en une variable double.
    si vous voulez dire que le code suivant ne marche pas, c'est quand même pas étonnant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double d = "((WIDHT+5)*5/2)-(LARG/2)";
    plus sérieusement il faut faire un parseur pour lire l'expression et un interpréteur pour l'exécuter. eval existe en Lisp mais pas en C++

    il est également possible d'imaginer une mécanique permettant de donner la chose en pâture à un tableur puis récupérer le résultât, mais franchement ...
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  4. #4
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Si la formule est variable mais que les variables sont toujours les mêmes, on peut envisager de faire une substitution brutale dans une chaine de façon à n'avoir au final qu'une chaine de caractère représentant une formule. Après, il suffit d'évaluer la formule avec un parseur, méthode qui peut s'écrire assez facilement si on ne doit pas gérer 4 grammaires différentes et des opérations compliquées (cf le post de Jean-Marc.Bourguet ).
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  5. #5
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    Il y a dans la doc de Boost::Spirit un exemple de calculette de ce type. C'ets quelques lignes et facile à etendre

  6. #6
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut
    Merci a tous pour vos réponse, ça m'a eclairé sur la méthode à suivre.
    Enfin de compte, j'ai utilisé cette bibliothèque http://www.codeproject.com/KB/cpp/rp...evaluator.aspx
    Enfin de compte de compte, il y en a beaucoup de solutions. Il faut juste choisir la bonne
    Merci encore

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

Discussions similaires

  1. [XL-2003] Une formule "dynamique" liée à une cellule (INDIRECT)
    Par fabibi001 dans le forum Excel
    Réponses: 1
    Dernier message: 08/01/2010, 23h03
  2. [XL-2007] Macro pour récupérer la valeur d'une formule avec Aujourd'hui
    Par patougaffou dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 28/09/2009, 18h28
  3. Réponses: 17
    Dernier message: 04/06/2009, 13h02
  4. Augmenter les valeurs dans une formule
    Par rickgoz dans le forum Excel
    Réponses: 6
    Dernier message: 28/05/2009, 15h49
  5. textbox dans une feuille de calcul dont la valeur est une formule
    Par nianko dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/11/2008, 12h43

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