[C con Clase] Operaciones trigonométricas y C++

Santiago Tabarez santiago230792 en gmail.com
Jue Oct 4 05:53:24 CEST 2012


Yo hace unos meses había empezado mi propio proyecto de una calculadora que
funcionara en línea de comandos (terminal).
En principio le había agregado las cuatro operaciones básicas, pero luego
les agregué otras, que son las funciones/macros contenidas en
el archivo cabecera *cmath*: pow, sqrt, sin, tan, cos, asin, atan, acos,
log, abs, asinh, acosh, atanh y algun otro más

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
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:

double suma (double a, double b)
{
    return (a + b);
}


double resta (double a, double b)
{
    return (a - b);
}


double multiplicar (double a, double b)
{
    return (a * b);
}


double division (double a, double b)
{
    if (b == 0){
        //implementar el error de N / 0 (N dividido cero)
    }
    return (a / b);
}

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.
En caso de tener que calcular el resto de la division:


double modulo (double a, double b)
{
    //tal vez sea conveniente que sean de tipo entero
    //en lugar de tipo coma flotante de doble precision
    return (a % b);
}

... e hice estas operaciones hasta el momento:

double valor_absoluto (double x)
{
    if (x < 0) {
        return ((-x) * (2)) + (x);
    }

    return x;
}

Quiero saber si estoy fallando en algo en esta operacion:

double potenciacion (int base, int exp)
{
    int iResult;

    if ((base != 0) && (exp == 0))
        iResult = 1;
    else if ((base == 0) && (exp > 0))
        iResult = 0;
    else if (exp == 1)
        iResult = base;
    else {
        for (int iCounter = exp; exp > 1; iCounter--) (base * base);
    }

    return iResult;
}

Así como está esta operacion, dependería de la anterior en que funcione
adecuadamente.

double calc_root (double base, double root)
{
    return potenciacion (base, 1 / root);
}

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++.

Tambien agradezco a Steven Davidson por contestar mi duda acerca de un
ejemplo de internet que modifique.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20121004/c2fa7295/attachment.html>


Más información sobre la lista de distribución Cconclase