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

avec Java Discussion :

Dévelopement d'une équation arithmétique


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 19
    Par défaut Dévelopement d'une équation arithmétique
    Bonjour,

    Est ce qu'il y a quelqu'un qui a une idée pour déveloper une équation arithmétique en éliminant les parenthéses.
    par example: on a cette équation:
    a=(b-x)*(2+t)+m
    qui doit devenir:
    a = b*2 + b*t - x*2 - x*t +m
    J'ai essayé avec la notation polonaise inverse mais non, c'était pas une bonne idée.

    ?
    Merci d'avance

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Au contraire, la notation polonaise inversée est une très bonne idée.
    Grâce à cette notation, tu vas obtenir un arbre binaire : si un nœud est un opérateur, alors il a un fils gauche et un fils droit. Sinon (si c'est un nombre ou une lettre) c'est une feuille.
    Il te faut simplement distribuer les opérandes pour les multiplications et divisions.
    Si un nœud * ou / possède un opérateur + ou - en fils droit, alors il faut distribuer le sous-arbre gauche sur les deux fils du fils droit.
    L'opérateur du fils droit devient le père. Il gagne 2 fils avec l'opérateur distribué.
    Tu raisonnes de la même façon avec un opérateur + ou - sur le fils gauche (attention, le / n'est pas commutatif).
    Tu reconstruit ton arbre jusqu'à ce qu'il ne possède plus un nœud * ou / avec un fils + ou -.
    C'est compliqué à expliquer, mais fait un dessin, ça deviendra limpide.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 19
    Par défaut
    Oui avec la notation polonaise inversée, il va me donner:
    b x - 2 t + * m +
    et pas la forme dévelopée que je voulais avoir telque..
    b*2 + b*t - x*2 - x*t +m

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Je t'ai expliqué qu'il "suffit" de retravailler l'arbre obtenue de manière très simple pour distribuer les opérateurs * et / sur + et -.
    La notation polonaise toute seule ne sert à rien.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 35
    Par défaut Réponse
    Histoire de donner un aperçu a ce qui est dit ,voila a quoi ressemble un arbre

    Nom : 147684.png
Affichages : 66
Taille : 1,1 Ko

    donc comme tu remarque un noeud est une opération , une feuille est le reste

    une lecture de gauche a droite de cet exemple donne 56+18*3
    fait attention a l'ordre de priorité des opération

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par cobra150 Voir le message
    une lecture de gauche a droite de cet exemple donne 56+18*3
    Non ! Attention aux parenthèses !
    La formule est : ( 56 + 18 ) * 3

    Merci pour l'arbre, je n'avais pas le courage de faire une image. Mais c'est tellement plus parlant

    Je reprends mon explication en me basant sur l'illustration.
    Tu cherches à distribuer la multiplication. Ton programme va détecter que le nœud "*" à un fils "+". Donc le nœud "*" va être supprimé pour reconstruire un nouveau sous-arbre. Il faut donc créer un nouveau nœud "+" (à la place du nœud "*") avec un fils gauche "*".
    Ce fils gauche "*" aura un fils gauche "56" et un fils droit "3".
    Tu ajoutes ensuite un fils droit "*" au nœud "+".
    Ce fils droit aura un fils gauche "18" et un fils droit "3".

    Voila, le sous-arbre tel qu'imagé au dessus est développé.
    Il suffit de généralisé à un arbre quelconque.
    Ici, "56" et "18" étaient des nombres. L'algorithme est généralisable à un sous-arbre quelconque avec une simple fonction récursive.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. Résolution d'une équation trigonométrique
    Par tlemcenvisit dans le forum Algorithmes et structures de données
    Réponses: 21
    Dernier message: 20/08/2009, 17h47
  2. Visual basic: algo résolvant une équation du second degré
    Par mauriiice dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 05/12/2005, 17h16
  3. Label (1') pour une équation
    Par xavlours dans le forum Mathématiques - Sciences
    Réponses: 2
    Dernier message: 01/12/2005, 09h24
  4. Réponses: 2
    Dernier message: 31/10/2005, 21h00
  5. Déterminer les coefficients moyens d'une équation linéaire
    Par Oliveuh dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 11/01/2005, 23h23

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