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 :

Evaluer le contenu d'une string


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    inge info
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : inge info

    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Points : 40
    Points
    40
    Par défaut Evaluer le contenu d'une string
    Bijour à tous!

    Alors je m'explique :


    J'ai besoin de pouvoir calculer le contenu d'une string

    par exemple ma string peut contenir :
    "(1+2)*100/1000+(52-1)"


    ou encore

    52+55>500 (-> false)

    en gros je voudrais gérer les opérateurs
    + ; - ; = ; / ; * ; > ; < ; >= ; <= ; &(et) ; |(ou)


    De plus il faut gérer les parenthèses

    Je ne sais pas trop comment m'y prendre surtout que je dois faire ca de façon optimisée car les calculs que j'aurais à effectuer sont bien plus complexes que mes deux petits exemples


    PS :
    j'ai déjà vu :
    http://www.developpez.net/forums/d46...-arithmetique/


    mais ca ne m'a pas inspiré plus que ca


    par avance merci pour votre aide
    (Je ne manquerais pas de poster la classe obtenue ou le lien vers un code source API déjà existant une fois qu'on aura résolu ce problème)

  2. #2
    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
    Soit tu fais ca avec de l'huile de coude (cf ici pour un exemple) soit tu passes par des outils plus lourds (bisons/flex ou boost::spirit) qui te permettent d'analyser ton entrée avec une grammaire que tu as défini.

    PS: y'a déjà eu ce thread sur ce sujet.
    "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)

  3. #3
    Membre du Club
    Profil pro
    inge info
    Inscrit en
    Juin 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : inge info

    Informations forums :
    Inscription : Juin 2010
    Messages : 34
    Points : 40
    Points
    40
    Par défaut
    je pense plutôt le coder moi même le problème c'est de trouver un algo efficace qui tienne la route

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Je vois quatre approches :

    - faire le décodage de la chaine à la main, c'est long mais hautement customisable et pédagogique.

    - générer un analyseur lexical et syntaxique avec des outils comme lex/yacc et les utiliser. C’est assez rapide et customisable mais il faut bien connaître la théorie des langages et savoir spécifier une grammaire en entré de ces outils.

    - utiliser un interpréteur dans le programme. C'est rapide mais non customisable car il faut utiliser le langage de l'interpréteur.

    - utiliser un compilateur dans le programme. C'est rapide mais non customisable car il faut utiliser le langage du compilateur.

    Je suis plutôt du coté de la quatrième solution, mais comme cela ne vous inspire pas, vous êtes bon pour l'huile de coude.

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

Discussions similaires

  1. Convertir le contenu d'une String en ligne de code
    Par DamS2502 dans le forum Langage
    Réponses: 5
    Dernier message: 29/04/2008, 07h40
  2. [Oracle] Executer le contenu d'une string
    Par altansar dans le forum SQL
    Réponses: 2
    Dernier message: 04/12/2007, 10h56
  3. Interpreter le contenu d'une string comme de l'hexa
    Par thibal_kamehouse dans le forum C++
    Réponses: 4
    Dernier message: 30/11/2006, 17h46
  4. Modifier contenu d'une String
    Par error dans le forum Langage
    Réponses: 7
    Dernier message: 03/10/2006, 09h58
  5. [DEBUTANT]Recherche mot contenu dans une String
    Par lynxman dans le forum Langage
    Réponses: 7
    Dernier message: 16/12/2005, 11h49

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