Elevar un número a una potencia en C

Iniciado por eaguel, 21 Noviembre 2012, 09:41 AM

0 Miembros y 1 Visitante están viendo este tema.

Kuko91

Me temo que tenemos la misma practica para entregar el lunes.. Pero no se te olvida declarar la funcion leeNumero????

eaguel

JeJe, si ya conseguí hacerlo con la función leeNumero y con la aportación de Oblivi0n
¿Estas en la ETSI?

peternash

#12
Pero esta función de potencia no puede hacer potencias de número negativo.

Yo una vez hice este ejemplo, un poco sucio, pero que te lo comparto para ver si te sirve:


double potencia (double base, int exp)
{
double dResult;

if ((base != 0) && (exp == 0))
dResult = 1;
else if ((base == 0) && (exp > 0))
dResult = 0;
else if ((exp < 0) && (base != 0))
dResult = 1 / potencia (base, -exp);
/* else if ((exp == 0) && (base == 0)) {
double num = numeric_limits<double>::quiet_NaN();
}*/
else {
for (dResult = 1; exp > 0; exp--)
{
dResult *= base;
}
}

return dResult;
}

En principio debería permitirte hacer potencias de base positiva y negativa, y de exponente positivo y negativo.
No sé si sirve con exponentes en fracciones.

EN el caso de la potencia indeterminada 00 (cero elevado a cero) aún no lo había resuelto, pero se puede utilizar una plantilla numeric_limits  para invocar la función miembro estática, 'quiet_NaN()', o hacer un return 0.0 / 0.0.

aramis

si no queres usar las math podes hacer lo siguiente

#include<stdio.h>

main(){
   
   int potencia=1,base,exponente,i;
   printf("ingrese numero base\n");
   scanf("%i", &base);
   printf("ingrese exponente\n");
   scanf("%i", &exponente);
   for(i=0;i<exponente;i++){
      potencia=potencia*base;
   }
   printf("la potencia es: %i\n" , potencia);

}