/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Problemas con Potencias en C

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Klamus



Registrado: 12 Nov 2007
Mensajes: 2

MensajePublicado: 12/11/2007 10:55 am
Título: Problemas con Potencias en C

Hola a todos!!
Tengo problemas con un ejercicio, es el siguiente:

Realiza un algoritmo que calcule la potencia, para ello pide por teclado la base y el exponente. Peden ocurrir tres cosas:

a) El exponente sea positivo, sólo tienes que imprimir la potencia.
b) El exponente sea 0, el resultado es 1.
c) El exponente sea negativo, el resultado es 1/potencia con el exponente positivo.

La cuestion es que no se hacer potencias en C, si alguien me puede ayudar se lo agradeceria ^^.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3770
Ubicación: Mexico

MensajePublicado: 12/11/2007 11:02 am
Título:

Para calcular las potencias manualmente solo tienes que multiplicar el numero por si mismo cuantas veces sean necesarias. Si quieres orientarte mediante programas de otros solo tienes que utilizar el motor de busqueda, calculo que debe existir una media docena de ejemplos sobre potencias en la base de datos de los foros.

Para exponentes negativos el proceso es similar y siguiendo el enunciado solo tienes primero que calcular el resultado con el exponente positivo y a continuacion dividir 1.0 entre ese resultado.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
Klamus



Registrado: 12 Nov 2007
Mensajes: 2

MensajePublicado: 12/11/2007 11:21 am
Título:

Gracias por la respuesta, al final lo he hecho así:

Código:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    int base;
    int exponente;
    int resultado;
   
    printf("Bienvenido a la calculadora de potencias\n");
    printf("Introduzca la base\n");
    scanf("%d",&base);
    printf("Introduzca el exponente\n");
    scanf("%d",&exponente);


   
    if(exponente>0)
    {
                   resultado=pow(base,exponente);
                   printf("El resultado es: %d\n",resultado);
    }
   
    if(exponente==0)
    {
                    resultado=pow(base,exponente);
                    printf("El resultado de la potencia es 1\n");
    }
   
    if(exponente<0)
    {
                   exponente=exponente*-1;
                   resultado=pow(base,exponente);
                   printf("El resultado de la potencia es 1/%d\n",resultado);
    }
    system("pause");
   
   
}



¿Que os parece, es la mejor opcion de hacerlo o es mejor de hacerlo de otra manera? Gracias
Volver arriba
david_celta



Registrado: 02 Jun 2005
Mensajes: 95

MensajePublicado: 12/11/2007 2:27 pm
Título:

exponente=exponente*-1;
exponente=0-exponente;
exponente=-exponente;

Código:

if(exponente==0)
    {
                    //resultado=pow(base,exponente);
                    printf("El resultado de la potencia es 1\n");
    }


Nota: Si no usas la variable resultado, no la calcules (mira donde dice // significa que esa linea no es necesaria)

Tambien esto:

Código:

printf("El resultado de la potencia es %f\n",(float)(1/resultado));

_________________
Rueda y rueda la vida, rueda y rueda el balón... y detras de la esperanza, palpita cada corazón.
Volver arriba
LunatikO



Registrado: 24 Sep 2007
Mensajes: 9
Ubicación: La Luna (de Valencia)

MensajePublicado: 12/11/2007 2:35 pm
Título:

Klamus escribió:
¿Que os parece, es la mejor opcion de hacerlo o es mejor de hacerlo de otra manera?


Si es un ejercicio de clase, depende de lo que te hayan pedido. Si te piden (o estás dando el tema) bubles, pues tendrás que hacerlo con bucles (el exponente en este caso sólo podrá ser entero). Si estás dando math.h, pues pow va que ni pintado.

Y, si no es el caso (me refiero a que no sea un ejercicio de clase) pues entonces sí, utiliza pow, sin duda.


Salu2.
_________________
Comité Contra las Faltas Voluntarias y el Lenguaje SMS:
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3770
Ubicación: Mexico

MensajePublicado: 12/11/2007 4:06 pm
Título:

Espero que no te moleste: por favor cambia de avatar, esto porque los avatares (las pequeñas imagenes utilizadas para identificar a los usuarios) deben ser imagenes pequeñas ya que todavia hay muchos usuarios con una coneccion de velocidad limitada. En otras palabras no es correcto utilizar imagenes animadas de un megabyte (como es tu caso) como avatar.

En cuanto al programa lo que debes calcular primero es el resultado, a continuacion verificas si el exponente es no negativo y si ese es el caso simplemente imprime el resultado. Caso contrario imprimes el valor 1.0 / resultado.

El programa corregido seria asi:
Código:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   int base;
   int exponente;
   double resultado;
   int i, j;
   
   printf("Introduzca la base: ");
   fflush(stdout);
   if (scanf("%d",&base) != 1)
      return EXIT_FAILURE;
   
   printf("Introduzca el exponente: ");
   fflush(stdout);
   if (scanf("%d", &exponente) != 1)
      return EXIT_FAILURE;
   
   /* Calcular el resultado con un exponente no negativo */
   resultado = 1.0;
   j = (exponente >= 0) ? exponente : -exponente;
   for (i = 0; i < j; i++)
      resultado *= base;
   
   /* Ajustar el resultado en base al signo del exponente */
   if (exponente < 0)
      resultado = 1.0 / resultado;
   
   printf("%d ^^ %d == %f\n", base, exponente, resultado);
   system("pause");
   
   return EXIT_SUCCESS;
}


Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
Maul



Registrado: 13 Nov 2007
Mensajes: 4
Ubicación: Mexico DF

MensajePublicado: 13/11/2007 4:06 pm
Título:

Buenas tardes.

quitense de broncas, la funcion pow() puede calcular potencias de cualquier numero a cualqueir exponente, su forma es la siguiente

pow(base,exponente)

y se usa con el archivo de cabecera math.h

y es algo asi

#include <math.h>

area=3.14*pow(radio,2); aqui estas haciendo que el pi, se multiplique
por radio al cuadrado, si te fijas, puse, pow y
el radio es un valor ingresado, como se multiplica por si mismo 2 veces, mejor le puse el 2


espero te sirva y le captes de volada
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3770
Ubicación: Mexico

MensajePublicado: 14/11/2007 6:47 am
Título:

Lo ideal seria el uso de la funcion pow pero me parece, en base al enunciado que presenta, que debe calcular la potencia manualmente, si pow fuera una opcion aceptable no le habrian indicado como calcular las potencias positivas, cero y negativas.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com