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
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.
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 :-/
:P
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
@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
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.
acumulador = base;
for(int i=1;i<potencia;i++)
{
acumulador=acumulador*base;
}
IOConsole.println("El resultado es "+acumulador+"");
jejej sorry, me pasa por hacerlo a la rápida, ahora si
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class potencia{
public static void main(String[] args) throws Exception{
int resul = 1, base, exponente;
short i;
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Ingrese base: ");
base = Integer.parseInt(bf.readLine());
System.out.print("Ingrese exponente: ");
exponente = Integer.parseInt(bf.readLine());
for(i=1; i<=exponente; i++){
resul = resul * base;
}
System.out.println("resultado: " +resul);
}
}
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
Cita de: 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
uhmm, quieres emplear metodos ?
lo que quieres hacer es que una ves ingresado la primerapotencia el programa te pregunte si deceas continuar ?
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