Calculo potencia numero real sem math pow() [RESOLVIDO]
26 respostas
L
Leonardo_Augusto
Bom dia pessoal!
Tenho que fazer o seguinte exercicio, e estou aqui quebrando a cabeça devido a minha fraqueza com java, alguem pode ajudar?
Escrever um metodo em java que realize o calculo da potencia de um numero real A por um numero inteiro b, sem a utilização do math.pow.
Segue o esboço do meu codigo abaixo.
Sei que não posso simplesmente multiplicar a base pelo expoente.
importjavax.swing.*;publicclassExercicio01{publicstaticfloatexp(floatn1){intbase;floattotal=0;if(base==0)total=1;elsefor(inti=0;i<n1;i++){total*=n1;i++;returntotal;}}//metodo principal publicstaticvoidmain(Stringargs[]){//Declaração de Variáveis floatnum1;intnum2;//Entrada de Dados do Usuário num1=Float.parseFloat(JOptionPane.showInputDialog("Digite um número"));num2=Integer.parseInt(JOptionPane.showInputDialog("Digite outro número"));//Exibição dos dados JOptionPane.showMessageDialog(null,exp(num1));}}
O teu problema não é de JAVA mas sim de matemática.
Como é que se calcula uma potência?
L
Leonardo_Augusto1 like
[b]A base quantas vezes o expoente aparecer…
Não precisa chamar de burro nao cara…hauahauahauahaua
[/b]
P
pmlm
Simplesmente implementa isso!
Multiplica a base por ela própria quantas vezes o expoente aparecer.
L
Leonardo_Augusto
Valeu cara, to fazendo isso aqui…
E desculpe a vergonha ae!!!
P
pmlm
L
Leonardo_Augusto
Cara,
Agora me tira a duvida, ta dando pau na hora de passar como parametro isso aqui:
importjavax.swing.*;publicclassExercicio01{publicstaticfloatexp(floatbase,floatexpoente){floatresultado=0;if(base==0){resultado=0;}elsefor(inti=1;i<expoente;i++){resultado=base*i;}}//metodoprincipalpublicstaticvoidmain(Stringargs[]){//DeclaraçãodeVariáveisfloatbase;floatexpoente;//EntradadeDadosdoUsuáriobase=Float.parseFloat(JOptionPane.showInputDialog("Digite um número"));expoente=Float.parseFloat(JOptionPane.showInputDialog("Digite outro número"));//ExibiçãodosdadosJOptionPane.showMessageDialog(null,exp(base,expoente));}}
Passo dois floats e o maldito me fala q não posso passar parametro float...
Erro dado pelo eclipse
[Exception in thread "main" java.lang.Error: Unresolved compilation problem:
This method must return a result of type float
at Exercicio01.exp(Exercicio01.java:4)
at Exercicio01.main(Exercicio01.java:30)
J
jvkirk
Como nosso amigo ali já disse, seu problema é de lógica e matematica mesmo
É só vc passar para o método o valor da base, e o valor da potencia
dai vc cria um for que repete o numero de vezes da potencia, e dentro do for coloca uma variavel acumulando o seu próprio valor vezes o valor da base digitada
mais ou menos assim
for (i = 0; i < potencia; i++) {
resultado *= base;
}
Simples
Leonardo Augusto:
Cara,
Agora me tira a duvida, ta dando pau na hora de passar como parametro isso aqui:
importjavax.swing.*;publicclassExercicio01{publicstaticfloatexp(floatbase,floatexpoente){floatresultado=0;if(base==0){resultado=0;}elsefor(inti=1;i<expoente;i++){resultado=base*i;}}//metodoprincipalpublicstaticvoidmain(Stringargs[]){//DeclaraçãodeVariáveisfloatbase;floatexpoente;//EntradadeDadosdoUsuáriobase=Float.parseFloat(JOptionPane.showInputDialog("Digite um número"));expoente=Float.parseFloat(JOptionPane.showInputDialog("Digite outro número"));//ExibiçãodosdadosJOptionPane.showMessageDialog(null,exp(base,expoente));}}
Passo dois floats e o maldito me fala q não posso passar parametro float...
Erro dado pelo eclipse
[Exception in thread "main" java.lang.Error: Unresolved compilation problem:
This method must return a result of type float
at Exercicio01.exp(Exercicio01.java:4)
at Exercicio01.main(Exercicio01.java:30)
vc tem um método com retorno, mas nao ta retornando nada Oo
tem que retornar um valor (do tipo float) ueh
e sua conta no for ali vai ficar errada
faz que nem expliquei ali emcima
N
nel1 like
double value = Math.pow(2, 4);
System.out.println(value);
double result = 1;
for(int i = 0; i < 4; i++) {
result = result * 2;
}
System.out.println(result);
Pequeno exemplo.
L
Leonardo_Augusto
Valeu pessoal e desculpe o amadorismo ae!
L
Leonardo_Augusto
[b]Nel,
Não posso usar o math pow, senão era facil!!!
hauahauahauahaua ou não né!!![/b]
L
Leonardo_Augusto
jvkirk,
Consegui resolver os problemas com os valores…
hehehehehehe, agora vou partir pra logica!!!
N
nel
Leonardo Augusto:
[b]Nel,
Não posso usar o math pow, senão era facil!!!
hauahauahauahaua ou não né!!![/b]
Por isso fiz usando laço de repetição.
Demonstrei com o Math apenas como exemplo.
L
Leonardo_Augusto
Valeu a todos pela força...
Problema Resolvido!!!
Segue o codigo caso alguem necessite utilizar...
Ou seja um iniciante em java!!!
importjavax.swing.*;publicclassExercicio01{publicstaticfloatexp(floatbase,floatexpoente){floatresultado=1;if(base==0){resultado=0;}elsefor(inti=0;i<expoente;i++){resultado*=base;}returnresultado;}//metodoprincipalpublicstaticvoidmain(Stringargs[]){//DeclaraçãodeVariáveisfloatbase;floatexpoente;//EntradadeDadosdoUsuáriobase=Float.parseFloat(JOptionPane.showInputDialog("Digite um número"));expoente=Float.parseFloat(JOptionPane.showInputDialog("Digite outro número"));//ExibiçãodosdadosJOptionPane.showMessageDialog(null,exp(base,expoente));}}
V
Vingdel
Boa tarde, Leonardo!
Veja o meu como fica:
importjava.util.Scanner;publicclasspow{publicstaticvoidmain(String[]args){Scannerentrada=newScanner(System.in);System.out.print("Valor da base: ");intbase=entrada.nextInt();System.out.print("Valor do expoente: ");intexp=entrada.nextInt();System.out.print(base+" elevado a "+exp+": "+pow(base,exp));}// Parte que te interessa do códigopublicstaticintpow(intb,inte){if(e==0)b=1;inttotal=b;while(e>1){total*=b;e--;}returntotal;}}
EDIT: adicionei condição para expoente = 0... Vlw pmlm
Abraço!
P
pmlm
Vingdel:
EDIT: adicionei condição para base = 0…
Condição errada.
Quando a base é 0, o resultado é zero. No teu caso vai dar um.
Pelo contrário, quando o expoente é 0 o resultado deve ser um. No teu caso vai dar zero.
V
Vingdel
pmlm:
Vingdel:
EDIT: adicionei condição para base = 0…
Condição errada.
Quando a base é 0, o resultado é zero. No teu caso vai dar um.
Pelo contrário, quando o expoente é 0 o resultado deve ser um. No teu caso vai dar zero.
Opa pmlm, falta de atenção mesmo… Corrigi lá. Obrigado!
Abraço!
J
JhowTroMundo
Esqueceram que número inteiro não quer dizer natural.
Só que eu nao posso utilizar o metodo pow, você utilizou se nao me engano!!!
Mais valeu!![/b]
L
Leonardo_Augusto
[b]Grande JhowTroMundo
Boa essa ae hein!!!
[/b]
V
Vingdel
Leonardo Augusto:
[b]Grande Vingdel
Só que eu nao posso utilizar o metodo pow, você utilizou se nao me engano!!!
Mais valeu!![/b]
Leonardo,
Eu imaginava que você diria isso. Você deveria olhar o código todo. Eu não usei o Math.pow(). O que eu fiz foi criar um método com o nome pow, o nome pode ser qualquer um (pot, potencia, power, numeroElevadoAOutro).
Preste atenção no código (entenda-o), não só no meu, assim você vai aprender bastante. Você vai ver que existem várias maneiras de fazer o que você quer.
Abraço!
L
Leonardo_Augusto
Vingdel:
Leonardo Augusto:
[b]Grande Vingdel
Só que eu nao posso utilizar o metodo pow, você utilizou se nao me engano!!!
Mais valeu!![/b]
Leonardo,
Eu imaginava que você diria isso. Você deveria olhar o código todo. Eu não usei o Math.pow(). O que eu fiz foi criar um método com o nome pow, o nome pode ser qualquer um (pot, potencia, power, numeroElevadoAOutro).
Preste atenção no código (entenda-o), não só no meu, assim você vai aprender bastante. Você vai ver que existem várias maneiras de fazer o que você quer.
Abraço!
Grande Vingdel ,
Me perdoe pela vergonha passada, depois que pus a cabeça no travesseiro é q fiquei pensando na burrada…
Pensei e peço mil desculpas novamente pela vergonha…
Irei prestar mais atenção ao codigo e valeu pelas dicas!!!
V
Vingdel
Leonardo Augusto:
Vingdel:
Leonardo Augusto:
[b]Grande Vingdel
Só que eu nao posso utilizar o metodo pow, você utilizou se nao me engano!!!
Mais valeu!![/b]
Leonardo,
Eu imaginava que você diria isso. Você deveria olhar o código todo. Eu não usei o Math.pow(). O que eu fiz foi criar um método com o nome pow, o nome pode ser qualquer um (pot, potencia, power, numeroElevadoAOutro).
Preste atenção no código (entenda-o), não só no meu, assim você vai aprender bastante. Você vai ver que existem várias maneiras de fazer o que você quer.
Abraço!
Grande Vingdel ,
Me perdoe pela vergonha passada, depois que pus a cabeça no travesseiro é q fiquei pensando na burrada…
Pensei e peço mil desculpas novamente pela vergonha…
Irei prestar mais atenção ao codigo e valeu pelas dicas!!!
Que isso, Leonardo!
O importante é que no final o assunto fique entendido, se foi de imadiato ou se foi com alguns empurrões são apenas detalhes.
Fique a vontade para argumentar pois isso enriquece o tema.