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

Java Discussion :

Calculatrice à expressions arithmétiques


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Par défaut Calculatrice à expressions arithmétiques
    Bonjour,

    il nous ai demandé de créer une calculatrice en java mais pas une simple calculatrice, l'utilisateur doit introduire une expression arithmétique (ex: 5+(2-8)*4 ) mais sans utiliser les structures de données tels que les arbres et les piles, je cherche des tutoriels ou des idées pour savoir par où commencer

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    C'est la seule contrainte ? Ne pas utiliser les arbres et les piles ? J'aurais plutôt vu l'inverse : parser pour faire un arbre, sans utiliser autre chose que du parcourt d'arbre pour l'évaluation. Parce qu'il y a un moyen très simple en Java d'évaluer des expressions : utiliser Nashorn (seule contrainte : la syntaxe JavaScript). Sinon, sans arbre et sans pile (implicite), et sans JavaScript, par récursivité, c'est faisable.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre éclairé Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Par défaut
    sans utiliser les arbres parce que c'est pour un tp d'Android et on est débutant dessus alors pour éviter les complications du code, juste par des fonctions même si récursive

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Je ne connais pas de tutoriel ou autres documents sur le sujet. Mais en utilisant une méthode naïve, on arrive assez facilement à écrire un algorithme. Je suppose qu'on est censée traiter des expression simples (avec un max de parenthèses par exemple, et encore ce n'est même pas à priori obligatoire). il suffit de faire pas à pas ce qu'on ferait si on voulait calculer soi-même le résultat sur papier, à la main. On commence par une combinaison d'opérateur unique (genre 1 + 2 + 3, ou 5 * 2 * 10), on établi une méthode générale (quelles variables et combien). Ensuite, les parenthèses étant le plus facile : on le résout par récursivité (chaque fois qu'on ouvre on descend et on traite jusqu'à ce qu'on ferme, on retourne le résultat lorsqu'on remonte). Puis on cherche à résoudre les combinaisons d'opérations sans parenthèse : en fonction de la priorité des opérateurs, on se rend compte qu'on peut le résoudre comme s'il y avait des parenthèses implicites (exemple : 1 + 3*5 + 5, c'est 1 + (3*5) + 5). On voit assez vite qu'on ne peut pas traiter l'opérateur tant qu'on a pas récupérer au moins 2 opérandes et 2 opérateurs, sauf s'il n'y a que 2 opérandes en tout (on ne peut pas traiter 1 + 3, avant d'avoir le * suivant le 3 (qui implique donc un appel récursif). Le reste n'étant que mise au point pour les cas particuliers que tu vas découvrir en testant. Ah, une autre chose évidente : l'expression complète elle-même est entre parenthèses implicitement.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2013
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 131
    Par défaut
    Salut,

    je me rapelle que pendant mes etudes on avait eu plus ou moins la meme chose. La methode etait d'utiliser la notation polonaise inversee :

    https://fr.wikipedia.org/wiki/Notati...onaise_inverse

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Pour le coup,

    1. l'évaluation d'expressions en polonaise inversée utilise typiquement une pile
    2. l'expression artichmétique donnée en exemple n'est pas en polonaise inversée, et sa conversion en polonaise inversée utilise typiquement un arbre (on passe de l'une à l'autre en changeant de type de parcours, infixé ou préfixé)


    Donc ça ne résout pas le problème algorithmique de base qui est de ne pas utiliser de pile ou d'arbre, et, en plus, ça modifie la question de base, ce qui n'est pas la meilleure façon pour y répondre.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/05/2007, 11h02
  2. Réponses: 1
    Dernier message: 03/01/2007, 15h07
  3. Réponses: 1
    Dernier message: 09/12/2006, 10h13
  4. Parsing d'expressions arithmétiques
    Par Premium dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 23/08/2006, 15h09
  5. Evaluation d'une expression arithmétique
    Par MysticKhal_0 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 10/03/2006, 18h25

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