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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  duda sobre elevar la potencia sin usar la multiplicación?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: duda sobre elevar la potencia sin usar la multiplicación?  (Leído 1,984 veces)
jorge.esquibel

Desconectado Desconectado

Mensajes: 2


Ver Perfil
duda sobre elevar la potencia sin usar la multiplicación?
« en: 18 Septiembre 2018, 04:16 am »

Si uso la multiplicación el código me quedaría así:
Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[]) {
  4. int acum=1,i,base,exponente;
  5.  
  6. printf("Digite la base: ");
  7. scanf("%d",&base);
  8. printf("Digite el exponente: ");
  9. scanf("%d",&exponente);
  10.  
  11.  
  12.  
  13. for(i=1;i<=exponente;i++){
  14. acum=acum*base; //el "*" no debe ser usado
  15. }
  16. printf("Resultado: %d",acum);
  17. return 0;
  18. }

Si se tiene que crear un código sin usar los operadores o condiciones de multiplicación o funciones de exponentes y la única regla es usar sumas.

Lo que se me ocurre es cambiar el acum=1 a acum=0.
acum= acum*base; a acum= acum+base;
pero en el ciclo for (i=1;i<=exponente;i++) el valor de exponente no me ayuda quedaría así mas o menos:

Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[]) {
  4. int acum=0,i,base,exponente;
  5.  
  6. printf("Digite la base: ");
  7. scanf("%d",&base);
  8. printf("Digite el exponente: ");
  9. scanf("%d",&exponente);
  10.  
  11.  
  12.  
  13. for(i=1;i<=exponente;i++){ /*la cantidad de veces que se sumara la base es lo que se pondra en el exponente. */
  14. acum=acum+base;
  15. }
  16. printf("Resultado: %d",acum);
  17. return 0;
  18. }



En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: duda sobre elevar la potencia sin usar la multiplicación?
« Respuesta #1 en: 18 Septiembre 2018, 23:14 pm »

Ya que la multiplicación son sumas sucesivas y la exponenciación son multiplicaciones sucesivas, pues haces cada operación en funciones separadas: en una multiplicas usando sumas y en la otra, aprovechando la primera, elevas con multiplicaciones sucesivas. Algo así:

Código
  1. #include <stdio.h>
  2.  
  3. int func_mul(int m, int n) {
  4.    int retval = 0;
  5.    int negativo = n<0;
  6.  
  7.    if(negativo)
  8.        n = -n;
  9.  
  10.    while(n--)
  11.        retval += m;
  12.  
  13.    return negativo? -retval : retval;
  14. }
  15.  
  16. int func_exp(int base, unsigned ex) {
  17.    int retval = 1;
  18.  
  19.    while(ex--)
  20.        retval = func_mul(retval, base);
  21.  
  22.    return retval;
  23. }
  24.  
  25. int main() {
  26.    int x;
  27.    unsigned y;
  28.  
  29.    printf("base > ");
  30.    scanf("%d", &x);
  31.    printf("exp  > ");
  32.    scanf("%d", &y);
  33.    printf("%d", func_exp(x, y));
  34. }


« Última modificación: 18 Septiembre 2018, 23:19 pm por MAFUS » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Elevar a cualquier potencia. [Batch]
Scripting
leogtz 2 11,019 Último mensaje 9 Abril 2009, 23:34 pm
por leogtz
[Batch] ayuda!! Elevar un Numero a una Potencia
Scripting
darkgx 3 12,055 Último mensaje 16 Diciembre 2009, 20:42 pm
por leogtz
Ejercicio elevar una potencia
Ejercicios
SXF 5 22,184 Último mensaje 9 Noviembre 2011, 16:12 pm
por landerzx
Elevar un número a una potencia en C « 1 2 »
Programación C/C++
eaguel 13 61,880 Último mensaje 13 Mayo 2019, 23:58 pm
por aramis
Como elevar una potencia en C
Programación C/C++
ERIK546 4 4,156 Último mensaje 6 Febrero 2014, 00:29 am
por Yoel Alejandro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines