Ayuda - Potencias unicamente con sumas en C

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
JerogZurc
Mensajes: 1
Registrado: 28/10/2019 4:07 pm

Ayuda - Potencias unicamente con sumas en C

#1 Mensaje por JerogZurc » 28/10/2019 4:19 pm

Buenas tardes

Una de las actividades que tengo que realizar es el siguiente: "Escribe un programa que obtenga la potencia de una base y un exponente dados, ocupando únicamente la operación de suma; no se deberá utilizar la multiplicación ni la función de potencia."

De primera, se me ocurre que necesito declarar las varables de "base" y "potencia" o "exponente", y se me ocurre que tengo que crear un ciclo anidado dentro de otro ciclo para que realice la misma operación de suma Nveces.

quedaria algo asi:

ciclo 1
- base + base + base ... (base)veces
- almacenar resultado en nueva variable. Ej: primernivel

ciclo 2
- primernivel + primernivel + primernivel ... (base)veces

el ciclo2 se tyendria que repetir (expenente)veces - 2 /* seria menos dos, porque en el primer ciclo ya tomamos las primeras dos repeticiones */

Esta es la manera en que a mi se me ocurrio pero no lo eh podido implementar en codigo para ejecutarlo, ademas de que estoy casi seguro de que existe una mejor opción

Espero puedan ayudarme, muchas gracias

Avatar de Usuario
kiko66
Mensajes: 41
Registrado: 11/10/2019 10:51 am

Re: Ayuda - Potencias unicamente con sumas en C

#2 Mensaje por kiko66 » 29/10/2019 3:56 pm

hola jero

:idea: para no complicarlo doy por hecho que la base y el exponente son numeros naturales

el resultado de un numero exponeciado seria multiplicar la base
"exponente" veces ej 3 exp 4 = 3x3x3x3
y multiplicar m x n es sumar m, n veces 3x3 = 3+3+3

por lo que quedaria:
3 exp 4 =
(3)x(3 exp 3) =
(3+3+3)x(3 exp 2) =
(9+9+9)x(3 exp 1) =
(27+27+27)x(3 exp 0) =
(81)x(1) = 81

por cada incremento del exponencial, el "m" sera el resultado de la anterior multiplicacion
y el "n" sera el numero de veces que se sumara el resultado anterior

salvo cuando el exponente sea 0, que el resultado siempre sera 1

aqui tienes una solucion al problema, lo ideal es que hagas tu propio algoritmo teniendo claro
como quieres que funcione, este codigo siempre lo puedes mirar si no encuetras inspiracion :wink:

Código: Seleccionar todo

#include <stdio.h>

int main(void){

   int base, exponente, resultado;
   
   puts("\nintroduce un numero natural para la base: ");
   scanf("%d", &base);

   puts("\nintroduce un numero natural para el exponente: ");
   scanf("%d", &exponente);

   resultado=base;
   if(exponente)                                          // si el exponente no es 0  
      for(int ex=1; ex<exponente ;ex++)                   // repito la multiplicacion exponente-1 veces
         for(int mlt=1, baseX=resultado; mlt<base ;mlt++) // 
            resultado+=baseX;                             // hago la multiplicacion con sumas
   else resultado=1;                                      // si el exponente es 0, resultado sera uno

   printf("\n%d elevado a %d es igual a: %d\n\n", base, exponente, resultado);

   return 0;
}
suerte con tu programa :)

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 7 invitados