EVALUER UNE EXPRESSION MATHÉMATIQUE

Vavavlp Messages postés 16 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 27 avril 2009 - 31 déc. 2009 à 10:08
romendil Messages postés 1 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 26 juin 2010 - 26 juin 2010 à 19:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51037-evaluer-une-expression-mathematique

romendil Messages postés 1 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 26 juin 2010
26 juin 2010 à 19:54
hello ! Ce programme m'intéresse énormément, c'est tout a fait ce que je souhaite étudier. Pourrais je savoir sur quelle méthode / théorie repose l'algorithme ... Et encore mieux, qqun a-t-il quelques références bibliographique (en anglais mm) afin de comprendre comment tout cela fonctionne :) merci
begueradj Messages postés 273 Date d'inscription dimanche 4 octobre 2009 Statut Membre Dernière intervention 24 juin 2014 9
6 janv. 2010 à 16:04
oui, c'était un programme demandé à réaliser 4 jours après la fin du chapitre des conversions et des notations différentes
opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009
6 janv. 2010 à 15:07
Hi!
J'ai l'impression que la conversion en notation polonaise inverse complique et alourdit le code sans rien apporter de vraiment positif; si l'expression était entrée directement dans cette notation, je dis pas, mais là?, peut-être ce programme n'est-il après tout qu'un exercice pour démontrer la validité d'un algorithme de conversion?
begueradj Messages postés 273 Date d'inscription dimanche 4 octobre 2009 Statut Membre Dernière intervention 24 juin 2014 9
6 janv. 2010 à 08:19
Ah, j'ai déposé cette petite source ici car je reçois des emails des gens d'ici me demandant un soutien dans ce sens, donc au lieu de leur envoyer des fichiers attaché à chaque fois, je leur donne e lien directement .... (j'ai d'autres pseudo sur ce site)
begueradj Messages postés 273 Date d'inscription dimanche 4 octobre 2009 Statut Membre Dernière intervention 24 juin 2014 9
6 janv. 2010 à 08:18
Bonjour;

Oui, effectivement, une classe aurait été mieux utile.

Oui, j'aurais pu traiter les espaces blancs, les virgules, les racines, et des variables du genre: (a+b+25) ... oui, mais là, on sera à la limite d'un mini compilateur, or, lorsque j'ai fait ça, en étant dans ma première, j'ai juste répondu à ce que l'on m'a demandé de faire.

Pour le (-1+2) qui ne marche pas: j'ai eu la chance le jour du test: l'enseignant n'a pas remarqué ça et j'ai eu la deuxième note ;)

Pour l'interfaçage: oui, on peut me proposer mieux, mais ça restera subjectf.

L'idée de classe, par contre, est intelligente.

Begueradj ~~
opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009
4 janv. 2010 à 15:45
Hi!
Autre particularité "fâcheuse", l'expression "-1+2" est rejetée...
Masterweb95800 Messages postés 10 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 17 janvier 2011
4 janv. 2010 à 12:36
Salut,

bon code, mais je suis d'accord avec Opossum_Farceur, ton code n'est pas très réutilisable... et tu devrai peut être le passé en C++ ou mieux en c#, je dis c# car il y a des "types" listes/piles très performant directement implémenter dans le langage => pourquoi réécrire des choses qui existent déjà ^^ et tu pourra récupérer toute une ligne de saisie espace y compris ;)

et l'idée de le mettre sous forme de classe est pas mal.

Ce n'est que mon avis mais beau boulot comme même.
tchao
opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009
2 janv. 2010 à 16:56
Hi!
Compilation réussie avec BorlandC++ 3.1
Un warning cependant, dans la fonction "div" avec le message : "Function should return a value"
En effet, que se passe-t-il si on a (y==0) ?
Réponse dans la fonction "evaluation" où l'on apprend que "y" est testé avant l'appel à la fonction "div" : il est donc inutile de le retester dans "div"!
Sans rentrer dans les détails (je regarderai plus tard cette affaire de conversion en notation polonaise inverse), un gros défaut de ton code : il n'est pas réutilisable!
L'expression à calculer est filtrée déjà au niveau de la frappe : il n'est par exemple pas possible d'y mettre des espaces, parfois bien pratiques pour rendre plus lisible une expression.
Dans l'idéal, ton code devrait se présenter sous la forme d'une classe (que l'on doit pouvoir recompiler facilement avec un autre compilateur) : on lui fournit en entrée la chaîne de caractères de l'expression à calculer (avec éventuellement des espaces!), elle retourne en sortie un résultat numérique brut ou, s'il y a erreur, le message à afficher; libre ensuite au programme appelant (ou une autre classe) de gérer ces retours à sa guise : il doit pouvoir par exemple formater le résultat s'il est décimal (ah oui au fait, les caractères '.' et ',' sont également proscrits!) ou, pourquoi pas, faire apparaître le message d'erreur dans une boîte de dialogue, avec des notes de musique s'il le faut pour faire plus joli.
pgl10 Messages postés 382 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 1 mai 2024 11
2 janv. 2010 à 16:14
Ce qui serait bien sympathique :
-1°) ajouter qqs fonctions, par exemples : abs, sqr, ...
pour montrer comment les prendre en compte.
-2°) ajouter un zip avec un eval.exx ( pour eval.exe )
pour ceux qui n'ont pas le même compilateur.
Merci, pgl10.
begueradj Messages postés 273 Date d'inscription dimanche 4 octobre 2009 Statut Membre Dernière intervention 24 juin 2014 9
1 janv. 2010 à 17:54
Bonjour;

Au lieu d'utiliser plusieurs parenthèses traditionelles du type (), on peut alterner avec des accolades {} et des crochets []: Question lisibilité de l'expression au premier abord.

2+(3+(5+(3+5)))===> it is better to write it this way:
2+(3+{5+[3+5]})
(juste in exemple)
opossum_farceur Messages postés 147 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 14 novembre 2009
1 janv. 2010 à 02:48
Hi!
Peut-on savoir à quoi servent les caractères [,],{,} ?
Merci.
Vavavlp Messages postés 16 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 27 avril 2009
31 déc. 2009 à 10:08
7+2(8+5) est mathématiquement correct ;)