cs_GoldenEye
Messages postés527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 2008
-
16 janv. 2003 à 20:06
janko_math
Messages postés4Date d'inscriptionjeudi 8 avril 2004StatutMembreDernière intervention12 juin 2004
-
12 juin 2004 à 05:18
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
janko_math
Messages postés4Date d'inscriptionjeudi 8 avril 2004StatutMembreDernière intervention12 juin 2004 12 juin 2004 à 05:18
Utilisé une liste chainée pour transcrire une expression c'est moche, tu devrais utiliser un arbre binaire, exemple:
t'as le calcul (a+b*c+dà)
tu fais:
+
/ / / a +
/ / \`
* d
/ b c
Et apres tu fais une fonction doublement recursive qui parcours ton arbre et qui fait le calcul. Ca t'ouvre bcp plus de possibilité.
FredArmoni
Messages postés153Date d'inscriptionvendredi 2 mai 2003StatutModérateurDernière intervention 2 avril 2010 10 mai 2004 à 11:12
Je commence à me demander si les "donneurs d'avis" sur cette fonction l'on réellement testée...
-50 -> erreur de syntaxe (après correction des diverses C5)
ok, je mets ma fainéantise maladive dans un trou et je ré écrit l'ensemble.
FredArmoni
Messages postés153Date d'inscriptionvendredi 2 mai 2003StatutModérateurDernière intervention 2 avril 2010 5 mai 2004 à 11:07
ok, j'ai.
il suffisait de déplacer les tests
((*calc)->previous!=NULL) en début de if, en effet on teste (*calc)->previous->op avant (*calc)->previous
par contre je tombe sur une autre C.5 (cette fois ci dans resolve) avec
(65.44-(30.00*65.44/912.60))*0.196
FredArmoni
Messages postés153Date d'inscriptionvendredi 2 mai 2003StatutModérateurDernière intervention 2 avril 2010 5 mai 2004 à 10:31
on peut utiliser fmod plutot que l'opérateur %
sinon j'obtiens une C..5 quand je passe l'opération suivante :
30.00*65.44/912.60
Pouvez vous m'aider à comprendre?
merci
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 19 oct. 2003 à 13:52
non ça ne marche pas :(
et avant de tomber sur cette erreur, j'ai du modifier tous les NULL en 0 quand tu les affectait à des MATH_OP. (j'utilie GCC sous Dev C++)
dommage, ça m'intéressait bcp :(
cs_gorgonzola
Messages postés37Date d'inscriptionsamedi 16 mars 2002StatutMembreDernière intervention21 février 2015 7 mars 2003 à 23:07
j'ai aussi eu des problemes a cette ligne je ne sais pas trop ce qui ne va pas cette fois ci
en tout cas les expressions a gauche et a droite ne doivent pas etre des double ou des float, c'est pourquoi j'ai mis un (long) devant
essaie peut etre ceci :
D1m3x
Messages postés402Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention21 juillet 20051 5 mars 2003 à 14:09
oops je voulia dire: et come d'hab.... c'est moi et po c mieux :)
D1m3x
Messages postés402Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention21 juillet 20051 5 mars 2003 à 14:08
Et comme d'habitude c'est mieux qui me prend le bug...
Et oui quand j'ai voulu compiler mon compilateur(VC++6.0) me dit:
-> error C2106: '%=' : left operand must be l-value
Je e sais pas ce que c'est mais je pex te dire à qel ligne cela ce trouve:
-> (long)(math->previous->val)%=(long)(math->next->val);
J'espère que tu sais ce que c'est.
Bon @+ et bonne prog a tous
cs_mic
Messages postés77Date d'inscriptionmardi 5 février 2002StatutMembreDernière intervention19 septembre 2012 19 févr. 2003 à 17:29
Tout bonnement exellent. Il te faut seulement rajouter quelques fonction, comme exposant ou autres trucs dans le genre, et ensuite tu pourras passer au niveau supérieur avec le calcul de sommes et tout ça, mais là ça devient compliqué. Exellent. Bonne continuation et bonne prog à vous tous. @+
Valkhor
Messages postés2Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention20 février 2003 24 janv. 2003 à 12:46
Hyper cool, merci. Valkhor
cs_GoldenEye
Messages postés527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 20084 16 janv. 2003 à 20:06
Très intéréssant. Un petit tutorial sur l'analyse syntaxique serait le bienvenu car ton code est assez dense.
Bravo
12 juin 2004 à 05:18
t'as le calcul (a+b*c+dà)
tu fais:
+
/ / / a +
/ / \`
* d
/ b c
Et apres tu fais une fonction doublement recursive qui parcours ton arbre et qui fait le calcul. Ca t'ouvre bcp plus de possibilité.
10 mai 2004 à 11:12
-50 -> erreur de syntaxe (après correction des diverses C5)
ok, je mets ma fainéantise maladive dans un trou et je ré écrit l'ensemble.
5 mai 2004 à 11:07
il suffisait de déplacer les tests
((*calc)->previous!=NULL) en début de if, en effet on teste (*calc)->previous->op avant (*calc)->previous
par contre je tombe sur une autre C.5 (cette fois ci dans resolve) avec
(65.44-(30.00*65.44/912.60))*0.196
5 mai 2004 à 10:31
sinon j'obtiens une C..5 quand je passe l'opération suivante :
30.00*65.44/912.60
Pouvez vous m'aider à comprendre?
merci
19 oct. 2003 à 13:52
et avant de tomber sur cette erreur, j'ai du modifier tous les NULL en 0 quand tu les affectait à des MATH_OP. (j'utilie GCC sous Dev C++)
dommage, ça m'intéressait bcp :(
7 mars 2003 à 23:07
en tout cas les expressions a gauche et a droite ne doivent pas etre des double ou des float, c'est pourquoi j'ai mis un (long) devant
essaie peut etre ceci :
((long)(math->previous->val))%=((long)(math->next->val));
ou si sa ne va toujours pas laisse tomber le %= pour :
((long)(math->previous->val))=((long)(math->previous->val))%((long)(math->next->val));
5 mars 2003 à 14:09
5 mars 2003 à 14:08
Et oui quand j'ai voulu compiler mon compilateur(VC++6.0) me dit:
-> error C2106: '%=' : left operand must be l-value
Je e sais pas ce que c'est mais je pex te dire à qel ligne cela ce trouve:
-> (long)(math->previous->val)%=(long)(math->next->val);
J'espère que tu sais ce que c'est.
Bon @+ et bonne prog a tous
19 févr. 2003 à 17:29
24 janv. 2003 à 12:46
16 janv. 2003 à 20:06
Bravo