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

JavaScript Discussion :

Comment passer de x^2 à Math.pow(x,2) ?


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Comment passer de x^2 à Math.pow(x,2) ?
    Bonjour amis internautes,

    voilà maintenant plusieurs semaines, si ce n'est un mois, que je tente de résoudre un problème concernant un projet personnel. Ce dernier consiste en un 'logiciel' permettant de dessiner une fonction, rentrée dans un 'input' de type texte, à l'intérieur d'un Canvas. Mon problème est le suivant : j'essaie en vain de trouver un moyen de traiter une chaîne de caractères contenant un '^' (caractère inconnu pour JavaScript)afin de le remplacer par la méthode reconnu par JavaScript ,Math.pow() (par exemple, (x+5)^3 deviendrait Math.pow(x+5,3)).

    Plus précisément, mon problème se situe lors du découpage de la chaîne de caractères. Je n'arrive pas à délimiter correctement l'élément devant être élevé à une certaine puissance car mon découpage doit fonctionner pour des fonctions du type : x^2, (x+2)^2, x^4+x^3+x^2+x+1.
    J'ai essayé de trouver d'autres manières de procéder mais sans succès.

    Est-ce que quelqu'un aurait une idée de la façon de résoudre ce problème ?

    Merci d'avance.

    P.S : Il s'agit là de mon premier post.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    javascript ne reconnait pas ^ ? Ha bon ?

    ^en js correspond à l'opérateur de comparaison bitwise xor

    Sinon pour acceder au caractère ^ dans une chaine, il suffit de l'echapper ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    chaine="(x+5)^3"
    chaine=chaine.split('\^')
    alert("Math.pow("+chaine[0]+","+chaine[1]+")")

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Points : 210
    Points
    210
    Par défaut
    Comment procède tu avec les autres opérations actuellement ?
    Un simple eval ?

    Ton problème ne peut se résoudre que d'une seule manière : implémenter un parseur pour la notation arithmétique infixée (la notation naturelle qu'on utilise au quotidien).

    C'est le seul moyen de définir de vrais règles de prédecécence (ordre et priorité des opérations). Fais quelques recherches la dessus tu trouvera pas mal d'infos : le développement d'un parseur d'expression arithmétique simple est l'exercice universel d'introductions aux parseurs et compilateurs.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    SpaceFrog, j'avais oublié c'est mais des operateurs logiques me sont inutiles ici. TheGwy, j'ai effectué des recherches sur la prédecécence ainsi que sur la création d'un parseur arithmétique. Cela me semble effectivement être le meilleur moyen de résoudre mon problème. J'ai notamment lu un article très intéressant sur une technique de "découpage par nœud". Il me reste juste à déterminer entre quelles opérateurs ou caractères, vais-je découper ma string en prenant en compte leur ordre d'importance. Merci à toi, d'avoir résolu mon problème.

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

Discussions similaires

  1. comment passer de access à MySQL
    Par isa_21 dans le forum Requêtes
    Réponses: 4
    Dernier message: 06/10/2004, 08h51
  2. [TLisBox] Comment passer à la ligne ?
    Par gamez dans le forum Composants VCL
    Réponses: 2
    Dernier message: 18/06/2004, 23h52
  3. [C#] Comment passer un paramètre Boolean au service Web ?
    Par ramalho dans le forum Services Web
    Réponses: 3
    Dernier message: 07/06/2004, 17h31
  4. [STRUTS] comment passer plusieur param GET aves <html:lin
    Par lfournial dans le forum Struts 1
    Réponses: 3
    Dernier message: 20/01/2004, 08h57
  5. Comment passer sous Delphi ?
    Par J-P-B dans le forum XMLRAD
    Réponses: 2
    Dernier message: 13/06/2003, 10h09

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