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]
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!!!
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)
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
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!!!
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));}}
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!
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.
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!
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]
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!!!
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.