Calculatrice d'expression mathématique

Soyez le premier à donner votre avis sur cette source.

Vue 10 462 fois - Téléchargée 738 fois

Description

Les deux fichiers .as contiennent les objets permettant le passage d'une expression mathématique classique (infixée) par ex 3*(4+5) en notation polonaise inversée 3 4 5 + * plus facile à évaluer en programmation et qui n'est pas ambigue (contrairement aux apparences) car par ex, l'addition a 2 opérandes qui sont donc forcément 4 et 5
Après ce passage en polonaise inversée, l'expression est calculée dans ce source
Le fichier fla est une interface sommaire permettant de tester les calculs
Le tout est compatible en as2, mais ne devrait pas être trop difficile à faire évoluer en as3
Les objets comprennent un certain nombre de fonctions et des expressions comme :
5 + (3 * 4^5) ou 5 - 2* exp(-3) ou asin(0.5)(en radians) sont reconnues et calculées

Source / Exemple :


Il s'agit d'une transcription partielle d'un source en Delphi pris sur http://www.delphifr.com//code.aspx?ID=45846
Ce source semble d'ailleurs une adaptation réussie d'un source de la défunte revue Pascalissime
J'ai pas mal d'expérience en delphi et pascal mais je suis un néophyte en actionscript
C'est donc pour progresser en actionscript que j'ai fait cette transcription
Le source des objets est assez long (+ de 500 lignes) et technique mais j'ai essayé de le commenter correctement
Enfin je n'ai pas eu le temps et le besoin d'implémenter la partie "constante" qui permet de calculer des f(x) par ex, mais il reste des traces dans le source

Conclusion :


Pour les experts en as, désolé pour les maladresses (par ex, de nombreux return sont inutiles) mais je compte sur vos conseils pour progresser

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_raffour
Messages postés
7
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
22 avril 2008
-
Pour ceux qui ne disposent pas de flash cs3 et ne peuvent donc pas ouvrir le fichier fla
voici son source (btOK est un composant bouton,tsaisie et treponse sont deux zones de texte)
import TNiveau;
import TCalcul ;


btOK.onPress = function(){
var expression = new TCalcul();
var expr : String = tsaisie.text;
try { expression.DefineExpression(expr);
// on évalue l'expression
expression.Evalue();
// on affiche juste le résultat
treponse.text = expression.GetResultat();

} // si il y a une erreur, on l'affiche
catch(e:Error) {treponse.text =expression.GetExprErrorString(expression.LastExprError);
expression = Null;
}
}
BananaTree
Messages postés
337
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
2 novembre 2010
-
helo,
si ça ne te dérange pas, je vais le passer en as3 et en anglais, et on va mettre ton nom en nom d'auteur, avec une jolie licence open source.
pascal
cs_raffour
Messages postés
7
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
22 avril 2008
-
BananaTree
ça ne m'embête pas que tu le passes en as3 et en anglais et je voudrais bien voir ça
mais je ne suis qu'un transcripteur et non l'auteur : il faudrait sans doute citer Barbichette qui l'a écrit en Delphi
De plus, il faudrait le fignoler :
éliminer les scories inutiles
ajouter le traitement des variables
améliorer la gestion des erreurs
vérifier la libération mémoire
je vais essayer de le faire mais si qqun a envie de m'aider ...
top30
Messages postés
1158
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
6 août 2010
-
Enfin un projet intéressant.
D'après ce que j'ai lu faudrais peut-être commencer par définir un "package Calcul:

package Calcul
{
classe Calcul
// la classe actuelle "TCalcul"

classe CalculOperators
// Liste de constantes de "CalculOperator"

classe CalculOperator
// Objet regroupant priorité, nom, operateur et type

classe CalculError
// Gestion des erreus

classe CalculItemsType
// Liste de constante des types d´élément de CalculStack

classe CalculItems
// Array des éléments de l'actuelle array "TTypePile"
}

A débattre...
cs_raffour
Messages postés
7
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
22 avril 2008
-
Waoow ! et moi qui commençait à penser que la communauté des action-scripteurs ne kiffait qu'à animer des petits mickeys dans tous les sens ...
Les suggestions de TOP30 sont alléchantes car bien structurées et découpées mais j'apprécierai un peu plus de précisions
je précise aussi que le type Constante (mal nommée donc à changer) correspond à la possibilité d'introduire une variable, par ex : x pour calculer différentes valeurs d'une expresion en f(x)
exemple : f(x) = 3x^2 -x la lettre x doit être reconnue comme une "constante" qu'on peut ensuite remplacer par une valeur numérique

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.