elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Elevar un número a una potencia en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Elevar un número a una potencia en C  (Leído 62,239 veces)
eaguel

Desconectado Desconectado

Mensajes: 33


Ver Perfil
Elevar un número a una potencia en C
« en: 21 Noviembre 2012, 09:41 am »

Hola, bueno días veréis estaba haciendo este programa:
Código
  1. #include <stdio.h>
  2. #include "potencia.h"
  3.  
  4. int potencia (int num1, int num2);
  5.  
  6. int main ()
  7. {
  8.  
  9. int num1 = 0;
  10. int num2 = 0;
  11.  
  12. potencia (num1, num2);
  13.  
  14. return 0;
  15. }
  16.  
  17.  
  18. int potencia (int num1, int num2)
  19. {
  20.  
  21. int valor ;
  22.  
  23. printf ("BASE:\n");
  24. printf ("Introduzca un número no negativo: ");
  25.  scanf ("\n%d", &num1);
  26. printf ("EXPONENTE:\n");
  27. printf ("Introduzca un número no negativo: ");
  28.  scanf ("\n%d", &num2);
  29.  
  30.  valor = num1 ^ num2;
  31.  printf("%d elevado a %d es %d\n", num1, num2, valor);
  32.  
  33.  
  34. return valor;
  35. }
  36.  

pero no se porque esta expresión no funciona
Código
  1.  valor = num1 ^ num2;
¿Me podéis iluminar con vuestra sabiduría ;D?


« Última modificación: 21 Noviembre 2012, 09:47 am por eaguel » En línea

тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Re: Elevar un número a una potencia en C
« Respuesta #1 en: 21 Noviembre 2012, 10:15 am »

Tio eres tonto o que?

Para hacer potencias en C tienes la función pow definida en la libreria math.h

Mira los errores que te da tu compilador colega


En línea

тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Re: Elevar un número a una potencia en C
« Respuesta #2 en: 21 Noviembre 2012, 10:18 am »

http://www.cplusplus.com/reference/clibrary/cmath/pow/
En línea

Ruso_x

Desconectado Desconectado

Mensajes: 5



Ver Perfil
Re: Elevar un número a una potencia en C
« Respuesta #3 en: 21 Noviembre 2012, 10:18 am »

Con respecto a lo que ha dicho mi compañero añado:

Busca aqui ;D

http://en.cppreference.com/w/c/numeric/math/pow

Saludos
En línea

Saludos
eaguel

Desconectado Desconectado

Mensajes: 33


Ver Perfil
Re: Elevar un número a una potencia en C
« Respuesta #4 en: 21 Noviembre 2012, 10:45 am »

El problema esta en que no puedo usar la librería libreria math.h
sino que tengo que usar el archivo .h que me dan que contiene:
Código
  1. #ifndef POTENCIA_H
  2. #define POTENCIA_H
  3.  
  4. /*Textos a utilizar en la funcion printf*/
  5. #define T_BASE              "BASE:\n"
  6. #define T_EXPONENTE         "EXPONENTE:\n"
  7. #define T_RESULTADO         "%d elevado a %d es %d\n"
  8. #define T_INTRODUZCA_NUMERO "Introduzca un numero no negativo: "
  9.  
  10. #endif
  11.  
En línea

Oblivi0n


Desconectado Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: Elevar un número a una potencia en C
« Respuesta #5 en: 21 Noviembre 2012, 11:43 am »

Asi de simple, creo que esto debería de funcionar

Código
  1. #include <stdio.h>
  2. #include "potencia.h"
  3.  
  4. int potencia (int base, int exponente);
  5.  
  6. int main(){
  7.  
  8. int num1,num2;
  9.  
  10. printf(T_INTRODUZCA_NUMERO);
  11. scanf("%d"&num1); // base
  12. printf(T_INTRODUZCA_NUMERO);
  13. scanf("%d", &num2); // exponente
  14. printf(T_RESULTADO,num1,num2,potencia(num1,num2));
  15. }
  16.  
  17. int potencia(int base, int exponente){
  18.  
  19. if(exponente == 0){
  20. return 1;
  21. }else{
  22. return base*potencia(base,expontente-1);
  23. }
  24. }
  25.  
En línea

eaguel

Desconectado Desconectado

Mensajes: 33


Ver Perfil
Re: Elevar un número a una potencia en C
« Respuesta #6 en: 21 Noviembre 2012, 12:21 pm »

Ahora si funciona pero ¿habría alguna posibilidad de poner los printf en la función potencia sin joderlo todo?, lo he estado intentando y se me cambian los valores.
« Última modificación: 21 Noviembre 2012, 12:29 pm por eaguel » En línea

Oblivi0n


Desconectado Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: Elevar un número a una potencia en C
« Respuesta #7 en: 21 Noviembre 2012, 12:47 pm »

Si, metiendo las variables num1 y num2 en la funcion potencia, no como parametros, en caso de querer usarlas como paramatros, haciendo uso de punteros
En línea

eaguel

Desconectado Desconectado

Mensajes: 33


Ver Perfil
Re: Elevar un número a una potencia en C
« Respuesta #8 en: 21 Noviembre 2012, 12:58 pm »

A ver si me aclaro  :-\  que estoy ya amargao con la porquería esta  :D
He hecho esto:
Código
  1. #include <stdio.h>
  2. #include "potencia.h"
  3.  
  4. int potencia (int base, int exponente);
  5.  
  6. int main()
  7. {
  8. int base;
  9. int exponente;
  10.  
  11. potencia (base,exponente);
  12.  
  13. return 0;
  14. }
  15.  
  16.  
  17. int potencia(int base, int exponente)
  18. {
  19. int num1;
  20. int num2;
  21.  
  22.        printf (T_BASE);
  23. printf (T_INTRODUZCA_NUMERO);
  24. scanf ("%d", &num1); // base
  25. printf (T_EXPONENTE);
  26. printf (T_INTRODUZCA_NUMERO);
  27. scanf ("%d", &num2); // exponente
  28. printf (T_RESULTADO,num1,num2,potencia(num1,num2));
  29.  
  30.  
  31.      if (exponente == 0)
  32.        {
  33. return 1;
  34. }
  35.      else
  36.        {
  37. return base*potencia(base,exponente-1);
  38. }
  39. }
  40.  
El problema esta en que solo realiza printf y scanf todo el rato , para solucionarlo ¿podría introducir un blucle do-while no?
Pd: Muchas gracias por tu amabilidad y ayuda Oblivi0n
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Elevar un número a una potencia en C
« Respuesta #9 en: 21 Noviembre 2012, 20:29 pm »

El problema esta en que no puedo usar la librería libreria math.h
sino que tengo que usar el archivo .h que me dan que contiene:
Código
  1. #ifndef POTENCIA_H
  2. #define POTENCIA_H
  3.  
  4. /*Textos a utilizar en la funcion printf*/
  5. #define T_BASE              "BASE:\n"
  6. #define T_EXPONENTE         "EXPONENTE:\n"
  7. #define T_RESULTADO         "%d elevado a %d es %d\n"
  8. ...
Honestamente como ejemplo del uso de macros en C es, de parte de tu profesor, uno muy malo.

El objetivo de las macros es hacer el código fuente mas claro y fácil de seguir y, por ello, menos propenso a los errores. Considerando eso ultimo si comparamos:
Código
  1. printf(T_RESULTADO, a, b, c);
  2.  
  3. printf("%d elevado a %d es %d\n", a, b, c);
Resulta obvio que es mas difícil detectar errores en la llamada que utiliza la macro "T_RESULTADO" que en la que utiliza la literal.

El problema esta en que solo realiza printf y scanf todo el rato , para solucionarlo ¿podría introducir un blucle do-while no?
Correcto, debes cambiar el proceso de uno recursivo a uno iterativo. También hay que cambiar la función eliminando los parámetros y cambiando su tipo de retorno a "void".

El programa con las correcciones:
Código
  1. #include <stdio.h>
  2.  
  3. void potencia(void);
  4.  
  5. int main(void)
  6. {
  7.   potencia();
  8.  
  9.   return 0;
  10. }
  11.  
  12. void potencia(void)
  13. {
  14.   int x;
  15.   int y;
  16.   long pot;
  17.  
  18.   puts("Indica la base:");
  19.   scanf("%d", &x);
  20.  
  21.   puts("Indica el exponente:");
  22.   scanf("%d", &y);
  23.  
  24.   printf("%d^^%d", x, y);
  25.   pot = 1;
  26.   while (y-- > 0)
  27.      pot *= x;
  28.   printf(" == %d\n", pot);
  29. }

Edito: el uso de las macros te toca a ti. En buen plan: yo no las toco ni con un palito.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Elevar a cualquier potencia. [Batch]
Scripting
leogtz 2 11,088 Último mensaje 9 Abril 2009, 23:34 pm
por leogtz
[Batch] ayuda!! Elevar un Numero a una Potencia
Scripting
darkgx 3 12,118 Último mensaje 16 Diciembre 2009, 20:42 pm
por leogtz
Ejercicio elevar una potencia
Ejercicios
SXF 5 22,239 Último mensaje 9 Noviembre 2011, 16:12 pm
por landerzx
Como elevar una potencia en C
Programación C/C++
ERIK546 4 4,196 Último mensaje 6 Febrero 2014, 00:29 am
por Yoel Alejandro
duda sobre elevar la potencia sin usar la multiplicación?
Programación C/C++
jorge.esquibel 1 2,016 Último mensaje 18 Septiembre 2018, 23:14 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines