Foro de elhacker.net

Programación => Java => Mensaje iniciado por: cracken422 en 9 Julio 2012, 01:02 am



Título: calcular potencia en java?
Publicado por: cracken422 en 9 Julio 2012, 01:02 am
necesito hacer un algoritmo que calcule una potencia, pidiendo al usuario que ingrese la base y luego el exponente

por ej la multiplicacion es

case 3: IOConsole.println("Ingrese el primer multipilcando");
                            a=IOConsole.readInt();
                            IOConsole.println("Ingrese el segundo multiplicando");
                            b=IOConsole.readInt();
                            resultado=op=a*b;
             IOConsole.println(a+"*"+b+"="+resultado);
                            break;

alguien tiene una idea? gracias


Título: Re: calcular potencia en java?
Publicado por: Ferno en 9 Julio 2012, 01:26 am
Pensemos.

¿Qué es estrictamente la potencia de un número?
Es multiplicar ese mismo número por si mismo, cuantas veces diga el exponente.
Si vos tenes la base y el exponente que te pasan por consola, podes realizar un bucle for desde el 1 al valor correspondiente al exponente, e ir acumulando las multiplicaciones de la base.

Fuera del bucle, imprimir el acumulador.


Título: Re: calcular potencia en java?
Publicado por: cracken422 en 9 Julio 2012, 05:50 am
lo hice de dos formas


      for(int i=1;i<n;i++)
      {
      base=base*base;
      }

      IOConsole.println("El resultado es "+base+"");

siendo n el exponente me da 2^3=16



      for(int i=1;i<=potencia;i++)
      {
      acumulador=base*base;
      IOConsole.println("El resultado es "+acumulador+"");
      }

2^3 me da 4

no veo la forma de hacer repetir la multiplicacion igual veces el numero del exponente :-/


Título: Re: calcular potencia en java?
Publicado por: konarr en 9 Julio 2012, 07:20 am
:P


Título: Re: calcular potencia en java?
Publicado por: rommel89 en 9 Julio 2012, 07:36 am
primero incluye la libreria math

import java.math;

y con la funcion de math.pow() para elevar a n potencia cualquier numero y su sintaxis es asi

math.pow(numeroAElevar,potenciaAelevar), si quiero elevar 3 al cuadrado lo aria asi

math.pow(3,2);

o

import java.math;
import java.Scanner;

Scanner leer=new Scanner(System.in);

system,.out.println("Digite el numero a elevar a n potencia");

int numero=leer.nextInt();

system.out.println("Digite la potenia");

int potencia=leer.nextInt();

int total=math.pow(numero,potencia);

System.out.println("El numero: "+numero+" elevado a la potencia: "+potencia+" es: "+total+);

nota si escribes math en minuscula el editor despues del punto te pondra en mayuscula la primera letra math=Math


Título: Re: calcular potencia en java?
Publicado por: cracken422 en 9 Julio 2012, 07:42 am
@konnar usé tu codigo con java IOConsole y me dio 4^2=64

@rommel habia visto lo de la libreria math, pero tengo que hacerlo con ciclo for y encontre muy poco en internet


Título: Re: calcular potencia en java?
Publicado por: Ferno en 9 Julio 2012, 07:57 am
Te recomiendo que agarres lápiz y papel y hagas el seguimiento del programa.
En tu primer code, supongamos que tu base es "2" y tu exponente "3" (por ende, el resultado debería ser 8).

En tu primer code, entra al for (n == 1) --> base = base*base --> 2 = 2*2 --> base == 4.
sigue en el bucle for (n == 2) --> 4 = 4*4 --> base == 16
sigue en el bucle for (n == 3) Aquí ya no entra puesto que 3 < 3 es falso.

Esto obviamente está mal.

Veamos, vos tenés tu base, tu exponente, y podés utilizar un acumulador.
Entonces, podemos inicializar nuestro acumulador antes de entrar al bucle for:

acumulador = base

Recuerda que no se debería de perder la información ni de la base, ni del exponente en ningún momento del programa (ese es tu fallo en tu primer code, sobreescribís la variable base).

Al haber inicializado, podés entrar en el bucle for sin problemas.

entra al for (n == 1) --> acumulador = acumulador*base --> 2 = 2*2 --> acumulador == 4.
sigue en el bucle for (n == 2) --> 4 = 4*2 --> acumulador == 8
sigue en el bucle for (n == 3) Aquí ya no entra puesto que 3 < 3 es falso.
Nuestro acumulador nos da el resultado correcto.

Código
  1. acumulador = base;
  2. for(int i=1;i<potencia;i++)
  3. {
  4.      acumulador=acumulador*base;
  5. }
  6.  
  7. IOConsole.println("El resultado es "+acumulador+"");


Título: Re: calcular potencia en java?
Publicado por: konarr en 9 Julio 2012, 08:13 am
jejej sorry, me pasa por hacerlo a la rápida, ahora si

Código
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3.  
  4. public class potencia{
  5.  
  6. public static void main(String[] args) throws Exception{
  7.  
  8. int resul = 1, base, exponente;
  9. short i;
  10.  
  11. System.out.print("Ingrese base: ");
  12.                base = Integer.parseInt(bf.readLine());
  13.  
  14.                System.out.print("Ingrese exponente: ");
  15.                exponente = Integer.parseInt(bf.readLine());
  16.  
  17.        for(i=1; i<=exponente; i++){
  18.  
  19.         resul = resul * base;
  20.        }
  21.  
  22.        System.out.println("resultado: " +resul);
  23. }
  24. }
  25.  


Título: Re: calcular potencia en java?
Publicado por: cracken422 en 10 Julio 2012, 21:27 pm
gracias ahora calcula bien, el problema de la variable acumulador es que si quiero hacer otro calculo con potencia en el menu me da otro resultado por el mismo acumulador, pense hacer algo como
private static int funcPot(int n, int p) {
int numero = n
for(int i = 0; i < p; i++)

resultado = funcMul(numero, n), pero no entiendo bien la variable private static


Título: Re: calcular potencia en java?
Publicado por: konarr en 10 Julio 2012, 22:08 pm
gracias ahora calcula bien, el problema de la variable acumulador es que si quiero hacer otro calculo con potencia en el menu me da otro resultado por el mismo acumulador, pense hacer algo como
private static int funcPot(int n, int p) {
int numero = n
for(int i = 0; i < p; i++)

resultado = funcMul(numero, n), pero no entiendo bien la variable private static

uhmm, quieres emplear metodos ?
lo que quieres hacer es que una ves ingresado la primerapotencia el programa te pregunte si deceas continuar ?


Título: Re: calcular potencia en java?
Publicado por: cracken422 en 11 Julio 2012, 00:24 am
es para hacer una calculadora en java con un menu, la potencia debe salir de la funcion multipliacion (la calculadora solo sabe sumar y restar, por lo tanto no puede multiplicar y dividir directamente)


esta es mi funcion multiplicacion      
      for(i=1; i<=num1; i++){
         
             resul = resul + num2;
         }

         IOConsole.println("resultado: " +resul);   


luego debo guardar esta funcion para usarla en un private static, algo como esto
 
private static int funcPot(int n, int p) {
int numero = n
for(int i = 0; i < p; i++)

resultado = funcMul(numero, n)
eso es lo que no se hacer