/* Retorna o polinômio referente à expressão dada; este polinômio devolvido é * sempre uma nova cópia, mesmo que a expressão seja uma variável simples. */ Polinomio CalcExpr(char* expr) { Pilha polPilha; ElemPilha *r; Polinomio p; int i; CriaPilha(&polPilha); i = 0; while (expr[i] != '\0') { if (Operando(expr + i)) { EmpilhaOperando(&polPilha, RecuperaPolinomio(expr[i]), false); } else if (Operador(expr + i)) { ExecutaOperacao(&polPilha, expr[i]); } else { IMPRIME_ERRO(MSG_ERRO_CARACTERE_INVALIDO); } i++; } r = VerificaDesempilha(&polPilha); if (!PilhaVazia(&polPilha)) { IMPRIME_ERRO(MSG_ERRO_FALTA_OPERADOR); } if (r->temp) { p = r->poli; } else { p = CopiaPolinomio(r->poli); } FREE(r); return p; }
int main() { ExecutaOperacao(); return 0; };