Yo hace unos meses había empezado mi propio proyecto de una calculadora que funcionara en línea de comandos (terminal). <br>En principio le había agregado las cuatro operaciones básicas, pero luego les agregué otras, que son las funciones/macros contenidas en <br>

el archivo cabecera <b>cmath</b>: pow, sqrt, sin, tan, cos, asin, atan, acos, log, abs, asinh, acosh, atanh y algun otro más<br><br>Pero como yo quería aprender un poco más de matemática y fortalecer mis conocimientos de C++ puro con un ejemplo que me hiciera usar<br>

muchas de sus posibilidades, decidí hacer mis propias funciones de las operaciones. Esto es lo que hice en cuanto a las 4 operaciones básicas:<br><br><font face="courier new,monospace">double suma (double a, double b)<br>

{<br>    return (a + b);<br>}<br><br></font><br><font face="courier new,monospace">double resta (double a, double b)<br>{<br>    return (a - b);<br>}<br><br></font><br><font face="courier new,monospace">double multiplicar (double a, double b)<br>

{<br>    return (a * b);<br>}<br><br></font><br><font face="courier new,monospace">double division (double a, double b)<br>{<br>    if (b == 0){<br>        //implementar el error de N / 0 (N dividido cero)<br>    }<br>    return (a / b);<br>

}<br><br><span style="font-family:arial,helvetica,sans-serif">En realidad en el caso de la division sobre cero, el control del divisor para que  no sea cero lo hacía en otra función. Hasta acá todo normal.<br>En caso de tener que calcular el resto de la division:<br>

<br></span></font><br><font face="courier new,monospace">double modulo (double a, double b)<br>{<br>    //tal vez sea conveniente que sean de tipo entero<br>    //en lugar de tipo coma flotante de doble precision<br>    return (a % b);<br>

}<br><br><span style="font-family:arial,helvetica,sans-serif">... e hice estas operaciones hasta el momento:<br><br><font face="courier new,monospace">double valor_absoluto</font> <font face="courier new,monospace">(double x)</font><br>

{<br><font face="courier new,monospace">    if (x < 0) {<br>        return ((-x) * (2)) + (x);<br>    }<br>    <br>    return x;<br>}<br><br><font face="arial,helvetica,sans-serif">Quiero saber si estoy fallando en algo en esta operacion:</font><br>

<br>double potenciacion (int base, int exp)<br>{<br>    int iResult;<br><br>    if ((base != 0) && (exp == 0))<br>        iResult = 1;<br>    else if ((base == 0) && (exp > 0))<br>        iResult = 0;<br>

    else if (exp == 1)<br>        iResult = base;<br>    else {<br>        for (int iCounter = exp; exp > 1; iCounter--) (base * base);<br>    }<br><br>    return iResult;<br>}<br><br><font face="arial,helvetica,sans-serif">Así como está esta operacion, dependería de la anterior en que funcione adecuadamente.</font><br>

<br>double calc_root (double base, double root)<br>{<br>    return potenciacion (base, 1 / root);<br>}<br><br><font face="arial,helvetica,sans-serif">En lo posible -a la amable persona que me asesore- si puede, que me de pistas de lo que pueda estar fallando y de posibles errores en la implementacion de C++.<br>

<br>Tambien agradezco a Steven Davidson por contestar mi duda acerca de un ejemplo de internet que modifique.<br></font></font></span></font>