elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 00:53  


Tema destacado: Únete al Grupo Steam elhacker.NET

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Duda funcíon potencia
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda funcíon potencia  (Leído 389 veces)
jamatbar

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Duda funcíon potencia
« en: 3 Diciembre 2011, 16:23 »

Buenas, me piden que realice un programa que use la función que calcula la potencia de un número, la función potencia la tengo que crear yo, el programa compila pero no me da el resultado bien, y quisiera saber donde me equivoco, el código es el siguiente:

Código
#include <stdio.h>
 
float potencia (float a, float b);
int main ()
 
{
 
float base;
float exponente;
float valor;
 
printf("Introduce la base de la potencia\n");
scanf("%f", &base);
printf("Indique el exponente\n");
scanf("%f",&exponente);
 
valor = potencia(base,exponente);
printf("La potencia de base %f y exponente %f es %f\n", base, exponente, valor);
return (0);
 
}
 
float potencia (float a, float b)
 
{
int i=1;
float valor;
for(i=0; i<=b;i++)
{
valor=valor*a;
}
 
return (valor);
}

Saludos


En línea
naderST


Desconectado Desconectado

Mensajes: 467



Ver Perfil
Re: Duda funcíon potencia
« Respuesta #1 en: 3 Diciembre 2011, 16:32 »

El problema está en la función ya que no inicializas la variable valor, pero esa variable está demás porque simplemente podrías hacer a*=a y retornas a y en tu for revisa la condición de parada ya que si pones 2 a la 3 tu función hará 2 a la 4.


En línea
jamatbar

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Duda funcíon potencia
« Respuesta #2 en: 3 Diciembre 2011, 16:56 »

El problema está en la función ya que no inicializas la variable valor, pero esa variable está demás porque simplemente podrías hacer a*=a y retornas a y en tu for revisa la condición de parada ya que si pones 2 a la 3 tu función hará 2 a la 4.

Gracias, lo he editado de la siguiente manera:

Código
#include <stdio.h>
 
float potencia (float a, float b);
int main ()
 
{
 
float base;
float exponente;
float valor;
 
printf("Introduce la base de la potencia\n");
scanf("%f", &base);
printf("Indique el exponente\n");
scanf("%f",&exponente);
 
valor = potencia(base,exponente);
printf("La potencia de base %f y exponente %f es %f\n", base, exponente, valor);
return (0);
 
}
 
float potencia (float a, float b)
 
{
int i=1;
for(i=0; i<=b;i++)
{
a*=a;
}
 
return (a);
}

Pero le he puesto una base 2 y elevado a 3 y me sale 65536 :S
En línea
naderST


Desconectado Desconectado

Mensajes: 467



Ver Perfil
Re: Duda funcíon potencia
« Respuesta #3 en: 3 Diciembre 2011, 17:07 »

Ah disculpa lo de a*=a no funcionaria porque a se esta alterando, vuelve a poner tu variable valor pero inicializala con el valor de a y ve multiplicándola por a.
« Última modificación: 3 Diciembre 2011, 17:12 por naderST » En línea
jamatbar

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Duda funcíon potencia
« Respuesta #4 en: 3 Diciembre 2011, 17:12 »

Ah disculpa lo de a*=a no funcionaria porque a se esta alterando, vuelve a poner tu variable valor pero inicializala con el valor de a y ve multiplicándola por a.

Lo he hecho, aun así sigue dando error ;S, me sale que 2 elevado a 3 da 32

Código
#include <stdio.h>
 
float potencia (float a, float b);
int main ()
 
{
 
float base;
float exponente;
float valor;
 
printf("Introduce la base de la potencia\n");
scanf("%f", &base);
printf("Indique el exponente\n");
scanf("%f",&exponente);
 
valor = potencia(base,exponente);
printf("La potencia de base %f y exponente %f es %f\n", base, exponente, valor);
return (0);
 
}
 
float potencia (float a, float b)
 
{
int i=1;
float valor=a;
for(i=0; i<=b;i++)
{
valor*=a;
}
 
return (valor);
}

En línea
naderST


Desconectado Desconectado

Mensajes: 467



Ver Perfil
Re: Duda funcíon potencia
« Respuesta #5 en: 3 Diciembre 2011, 17:14 »

Es por la condición de parada de tu for
Código
float potencia(float a, float b){
float valor;
int i;
 
for(i=2,valor=a;i<=b;valor*=a,i++);
return valor;
}
 
En línea
jamatbar

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Duda funcíon potencia
« Respuesta #6 en: 3 Diciembre 2011, 17:18 »

Muchas gracias, llevaba mucho tiempo viendo a ver cual era el fallo pero no caía

Saludos!
En línea
naderST


Desconectado Desconectado

Mensajes: 467



Ver Perfil
Re: Duda funcíon potencia
« Respuesta #7 en: 3 Diciembre 2011, 17:23 »

De nada, pero pudieras usar la función powf de la librería math.h.
En línea
rir3760


Desconectado Desconectado

Mensajes: 382


Ver Perfil
Re: Duda funcíon potencia
« Respuesta #8 en: 3 Diciembre 2011, 18:21 »

Aqui voy de metiche ... espero se tome de forma constructiva.

No se requiere de un contador ya que el parametro indicando la potencia puede utilizarse para ese proposito. El acumulador debe empezar en 1 para tener en cuenta la potencia 0 (donde todos resultan en el valor 1).

Por ejemplo:
Código
float potencia(float a, float b)
{
  float rv;
 
  for (rv = 1.0; b > 0; b--)
     rv *= a;
 
  return rv;
}

Pero como ya comentaron mejor utilizar la funcion para ese proposito: pow cuyo prototipo se encuentra en <math.h>.

Un saludo
En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
jamatbar

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Duda funcíon potencia
« Respuesta #9 en: 3 Diciembre 2011, 18:51 »

Sé que hay una función potencia en la biblioteca math.h, pero en el ejercicio nos piden que realicemos una de cero

Saludos
En línea
naderST


Desconectado Desconectado

Mensajes: 467



Ver Perfil
Re: Duda funcíon potencia
« Respuesta #10 en: 3 Diciembre 2011, 20:04 »

Detalle muy importante rir3760 gracias por la corrección. Claro que se toma de forma constructiva en lo personal yo estoy aquí para aprender.
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda A0. Baja la potencia del router
Wireless en Linux
vittorio 1 709 Último mensaje 30 Diciembre 2009, 00:46
por Uxio
Duda con funcion dentro de funcion en un echo
PHP
N4X 6 2,124 Último mensaje 21 Enero 2010, 18:12
por N4X
[Python][Ejercicio (por y para novatos)] Función para elevar potencia
Scripting
kerith 7 2,528 Último mensaje 2 Enero 2011, 14:10
por kerith
Potencia sin Pow. Error en mi funcion.
Programación C/C++
Anastacio 4 307 Último mensaje 2 Febrero 2012, 00:33
por rir3760
Calcular potencia con una función recursiva
Programación C/C++
DickGumshoe 4 333 Último mensaje 8 Abril 2012, 18:24
por DickGumshoe
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines