From 459085fd21dcf26ec3ee9f6a293e3f6721a85383 Mon Sep 17 00:00:00 2001 From: HombreLaser Date: Thu, 28 Apr 2022 19:36:22 -0500 Subject: Corregido error de la regla de la cadena. --- differentiator.cpp | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/differentiator.cpp b/differentiator.cpp index d25366d..5f8fffa 100644 --- a/differentiator.cpp +++ b/differentiator.cpp @@ -75,17 +75,11 @@ Expression *Differentiator::visit(SubExpression *expr) const { // Regla de la potencia. f(x)=x^c, f'(x)=c*x^(c-1)}*f'(x). Expression *Differentiator::visit(PowerExpression *expr) const { Literal *c = dynamic_cast(expr->getRight()); - Variable *x = dynamic_cast(expr->getLeft()); - - /* Si el valor izquierdo no es un nĂºmero, entonces el derecho - lo es. */ - if(c == NULL) { - c = dynamic_cast(expr->getLeft()); - x = dynamic_cast(expr->getRight()); - } - - return new MultiplicationExpression(new MultiplicationExpression(c->copy(), new PowerExpression(x->copy(), new Literal(c->getValue() - 1))), - expr->getLeft()->diff(this)); + Expression *left = expr->getLeft(); + + return new MultiplicationExpression(new MultiplicationExpression + (new Literal(c->getValue()), new PowerExpression(left->copy(), new Literal(c->getValue() - 1))), + left->diff(this)); } // Regla del producto. -- cgit v1.2.3