Vavavlp
Messages postés16Date d'inscriptionsamedi 8 septembre 2007StatutMembreDernière intervention27 avril 2009
-
31 déc. 2009 à 10:08
romendil
Messages postés1Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention26 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.
romendil
Messages postés1Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention26 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és273Date d'inscriptiondimanche 4 octobre 2009StatutMembreDernière intervention24 juin 20149 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és147Date d'inscriptionlundi 16 août 2004StatutMembreDernière intervention14 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és273Date d'inscriptiondimanche 4 octobre 2009StatutMembreDernière intervention24 juin 20149 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és273Date d'inscriptiondimanche 4 octobre 2009StatutMembreDernière intervention24 juin 20149 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és147Date d'inscriptionlundi 16 août 2004StatutMembreDernière intervention14 novembre 2009 4 janv. 2010 à 15:45
Hi!
Autre particularité "fâcheuse", l'expression "-1+2" est rejetée...
Masterweb95800
Messages postés10Date d'inscriptionlundi 26 mars 2007StatutMembreDernière intervention17 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és147Date d'inscriptionlundi 16 août 2004StatutMembreDernière intervention14 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és382Date d'inscriptionsamedi 18 décembre 2004StatutMembreDernière intervention 1 mai 202411 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és273Date d'inscriptiondimanche 4 octobre 2009StatutMembreDernière intervention24 juin 20149 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és147Date d'inscriptionlundi 16 août 2004StatutMembreDernière intervention14 novembre 2009 1 janv. 2010 à 02:48
Hi!
Peut-on savoir à quoi servent les caractères [,],{,} ?
Merci.
Vavavlp
Messages postés16Date d'inscriptionsamedi 8 septembre 2007StatutMembreDernière intervention27 avril 2009 31 déc. 2009 à 10:08
26 juin 2010 à 19:54
6 janv. 2010 à 16:04
6 janv. 2010 à 15:07
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?
6 janv. 2010 à 08:19
6 janv. 2010 à 08:18
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 ~~
4 janv. 2010 à 15:45
Autre particularité "fâcheuse", l'expression "-1+2" est rejetée...
4 janv. 2010 à 12:36
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
2 janv. 2010 à 16:56
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.
2 janv. 2010 à 16:14
-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.
1 janv. 2010 à 17:54
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)
1 janv. 2010 à 02:48
Peut-on savoir à quoi servent les caractères [,],{,} ?
Merci.
31 déc. 2009 à 10:08