jjboy91 | Bonjour,
Je suis en ce moment en trian de coder une fonction capable d'evaluer une expression.
J'ai reussi a la coder. Je cherche a decouper mon code en une ou plusieurs fonctions mais je recontre quelques problemes.
J'ai code cette fonction en recursif et je ne sais pas s'il est possible de la decouper.
Voici mon code:
Code :
- #include <stdlib.h>
- #include "eval_expr.h"
- typedef struct s_calc
- {
- int l;
- int r;
- char op;
- char next_op;
- } t_calc;
- int calc_rec(char *cal, int *left_r, char *op_r, int prio_b, char **p_calc)
- {
- t_calc calc;
- if (left_r != NULL)
- calc.l = *left_r;
- else
- {
- if (*cal == '(')
- calc.l = calc_rec(cal + 1, NULL, NULL, 0, &cal);
- else
- calc.l = my_strtod(cal, &cal);
- }
- if (op_r != NULL)
- calc.op = *op_r;
- else
- {
- calc.op = *cal;
- cal += 1;
- }
- while (calc.op != '\0' && calc.op != ')' && priorite(calc.op) > prio_b)
- {
- if (*cal == '(')
- calc.r = calc_rec_suite(cal + 1, NULL, NULL, 0, &cal);
- else
- calc.r = my_strtod(cal, &cal);
- calc.next_op = *cal;
- cal += 1;
- if (est_oper(calc.next_op) && priorite(calc.next_op) > priorite(calc.op))
- calc.r = calc_rec_suite(cal, &calc.r, &calc.next_op, priorite(calc.op), &cal);
- calc.l = effectuer_oper(calc.l, calc.op, calc.r);
- calc.op = calc.next_op;
- }
- if (op_r != NULL)
- *op_r = calc.next_op;
- if (p_calc != NULL)
- *p_calc = cal;
- return (calc.l);
- }
|
J'aurais besoin de vous pour apprendre a bien decouper mon code.
Merci d'avance pour votre aide Message édité par jjboy91 le 06-04-2011 à 19:36:57
|