Calculer une équation mathématique complexe dans un string et obtenir son résultat

Soyez le premier à donner votre avis sur cette source.

Vue 30 786 fois - Téléchargée 1 559 fois

Description

Ce code permet de calculer des expressions complexes. Exemple, avec -3+(2+(2*2)/4)^2-1 on obtient 5.0. L'utilisation est simple:

JCalculateur calculateur = new JCalculateur();
calculateur.setEquation(taEquation.getText()); // l'équation
try {
calculateur.calculer(); //calcule
tResult.setText(calculateur.toString()); //la réponse
} catch (Exception e) { //Si erreur
tResult.setText(e.getMessage()); //affiche le message d'erreur à la place de la réponse
}

Supporte de nombreuses fonctions (sin, cos, tan, log, ln, pi, ...) et les opérateurs +, -, *, /, ^, les nombres négatifs et les nombres à virgule. Pour les fonctions, les arguments doivent être entre des crochets et non des parentèses. Ex log[10]

Le but de cette source est que je planifie faire un petit langage de programmation et cet évaluateur d'expression constitue une grosse étape. Je vais essayer de trouver une solution au crochets et penser à une implémentation de and &, or |, xor %, modulo \ et d'un log plus efficace logx[argument, base].

Conclusion :


Le résonnement pour arriver à calculer des expressions est complexe, c'est pourquoi je l'ai diviser en fonctions, pour l'afficher plus clairement.

Donnez moi vos commentaires

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

DeadlyPredator
Messages postés
222
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
30 juin 2008

Les possibilités d'expension de ce code sont grandes, vous pouvez facilement implenté des opérateurs et des fonctions.
amezghal
Messages postés
385
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
21 août 2015
1
est ce que je peut utilser votre class pour en faire un petit traceur des fonctions et d'integrales ,si non je suis obliger de construire le mien(j'ai dejà réaliser cela avec vb mais je n'arrive pas a le traduire en java ) merci.
DeadlyPredator
Messages postés
222
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
30 juin 2008

ok, tu veux dire avoir une fonction comme x^2+3x-2=y ou 3x+4=y? Si oui, pas de problèmes. Il ne te suffit que de conserver la formule de l'utilisateur et quand tu trace, tu fait un while et à chaque boucle, tu remplace avec .replace sur le string la variable x par la valeur requise et tu trace le résultat.
amezghal
Messages postés
385
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
21 août 2015
1
merci; mais j'arrive a faire la mienne;rendevous dans 2 jrs d'ici.
cs_laurent1024
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
14
Ca m'a pas l'air mal cette source. par contre j'ai regarde vite fait le code, pourquoi n'as tu pas realiser un automate à pile pour la décomposition des sous equations ?
Je pense qu'il te permettrait aussi de gerer ton probleme avec les crochets, et si mes souvenirs sont bons, les compilateurs utilisent cette technique.

++

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.