Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: -esifu- en 24 Noviembre 2010, 19:25 PM

Título: Duda, sobre cómo poner una potencia.
Publicado por: -esifu- en 24 Noviembre 2010, 19:25 PM
Hola, tengo una duda en un programa que estoy haciendo.

Necesito elevar (-1.0)^i

pero no sé cómo ponerlo en lenguaje C para que no me de problemas.

La ecuación completa es:

j=j+[ ( (-1.0)^i) / (2i+1) ]

Gracias.
Título: Re: Duda, sobre cómo poner una potencia.
Publicado por: Akai en 24 Noviembre 2010, 19:35 PM
Tienes que recurrir a la librería math.h o diseñarte tu mismo una función que realice potencias.
Título: Re: Duda, sobre cómo poner una potencia.
Publicado por: Shell Root en 24 Noviembre 2010, 19:48 PM
Es verdad, lo que dice @Akai, tienes que recurrir a la libreria,
#include <math.h>

La función es,
double pow( double base, double exp );

Description:
The pow() function returns base raised to the exp power. There's a domain error if base is zero and exp is less than or equal to zero. There's also a domain error if base is negative and exp is not an integer. There's a range error if there's an overflow.

:http://www.elook.org/programming/c/pow.html
Título: Re: Duda, sobre cómo poner una potencia.
Publicado por: Ivanchuk en 24 Noviembre 2010, 21:45 PM
Si es siempre -1^i, te podes fijar si i es par o impar y devolver 1 o -1:
j=j+ ( (i & 1)? -1 : 1) / (2i+1)
Título: Re: Duda, sobre cómo poner una potencia.
Publicado por: piou en 24 Noviembre 2010, 22:18 PM
Puedes usar la librería math, pero no estoy seguro de que sea estándar, de todos modos una función que haga lo mismo es bastante fácil de hacer:

double potencia(int base, int exponente)
{
int i;
long double j = base;
for (i=1;i< exponente;i++)
{
j = j * base;
}
return j;
}
Título: Re: Duda, sobre cómo poner una potencia.
Publicado por: -esifu- en 25 Noviembre 2010, 00:26 AM
 :-\
Título: Re: Duda, sobre cómo poner una potencia.
Publicado por: piou en 25 Noviembre 2010, 15:33 PM
Veo que estás haciendo la fórmula de leibniz.
Como lo único que elevas a un número es el -1, puedes ver si es par o impar, si no, puedes usar la función que te he dejado en mi anterior post, o aplicarla de esta manera, que es peor pero más lineal y sencilla (imagen de la wikipedia):
(http://upload.wikimedia.org/math/9/e/8/9e804b8a1a11e442be93fed1d52205a9.png)