Question sur les union et gestion de priorités dans une expression [C] - C - Programmation
Marsh Posté le 29-08-2003 à 10:13:44
utilise des enum(érations) au lieu de char*
et apres, ben pour tes noeuds, tu mets une union et une enum dans ta structure, comme ça tu regarde l'enum pour savoir quoi faire d' l'union
Marsh Posté le 29-08-2003 à 10:20:39
freds45 a écrit : |
les int sont pas censes etre les feuilles de ton arbre ? les operateurs etant, eux, tous les autres noeuds, me trompe-je ?
Marsh Posté le 29-08-2003 à 10:24:02
Taz a écrit : utilise des enum(érations) au lieu de char* |
ok, je vois le truc pour le contenu de la structure
par contre l'histoire de l'enum au lieu du char* ... je comprends pas ce ke tu veux dire Le char* c'est la chaîne que j'analyse, la valeur est stockée sous forme d'int.
Marsh Posté le 29-08-2003 à 10:27:49
souk a écrit : |
En fait j'ai défini qu'un seul type de noeud, qui contient soit un int (la valeur) soit un opérateur. Chui ptêt allé un peu vite sur la structure T'aurais fait autrement ?
Marsh Posté le 29-08-2003 à 10:30:21
freds45 a écrit : |
pas necessairement, tu regardes si le noeud est une feuille, si oui alors c'est une valeur, si non, c'est un operateur. (mais ca aurait ete plus propre d'avoir 2 types de noeuds effectivement, mais spa grave )
Marsh Posté le 29-08-2003 à 10:34:57
souk a écrit : |
Suffit de regarder si les pointeurs vers les deux fils sont null
par contre l'histoire de priorité des opérateurs... je sèche !!
Marsh Posté le 29-08-2003 à 10:35:52
ah ok, je croyais que tu tapais les trucs en dur, comme je l'ai déjà vu faire ici-même, avec un champ char * pour le type
Marsh Posté le 29-08-2003 à 11:08:28
non, j'essaye de faire un truc propre
prochaine étape sur la todo list : des fonctions
Marsh Posté le 29-08-2003 à 09:41:01
all
Voilà, je suis en train de coder une fonction d'éval d'un expression numérique, qui renvoie un int correspondant à une expression passée en paramètre sous la forme d'un char* .
Actuellement, je place l'expression dans un arbre, ça marche bien, par contre le gros souci, et je vois pas du tout comment faire, c'est la gestion des priorités des opérateur * et / ...
Autre question : J'ai défini une union, soit une valeur (int), soit un opérateur. Une union est placée dans chaque noeud de l'arbre. Est ce qu'il y a moyen de savoir ce qu'il y a dans un noeud donné? Un opérateur ou un int ?
---------------
Filmstory : gardez trace des films que vous avez vu ! :D