| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2009 20:51:27
|
KamillaaH
What is classpath?
![[Avatar]](/images/avatar/7e6cb5628570987e8f2da936009b4043.jpg)
Membro desde: 08/09/2009 21:06:24
Mensagens: 6
Offline
|
Olá!
Tenho que fazer um algoritmo que identifique quais os números que são potências de 2.
Consegui implementar, só que só são identificadas as potências a partir de 4. Porém, 1 e 2 também são potências.
Alguém pode me dar uma dica sobre o que fazer para os números 1 e 2 serem identificados?
Obrigada!
O console mostra:
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2009 20:55:59
|
AlissonGuj
JavaBaby
![[Avatar]](/images/avatar/1df9c0d719c7928c277ca723541ede7a.jpg)
Membro desde: 09/10/2009 20:17:40
Mensagens: 91
Offline
|
talvez se vc fizesse um if e um esle if para o 1 e 2 não funcionaria?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2009 21:02:02
|
KamillaaH
What is classpath?
![[Avatar]](/images/avatar/7e6cb5628570987e8f2da936009b4043.jpg)
Membro desde: 08/09/2009 21:06:24
Mensagens: 6
Offline
|
Sim, pensei nisso... Só que no else e depois if teria que ser agor tipo...
E daí eu tenho erro...
=/
This message was edited 1 time. Last update was at 16/10/2009 21:04:20
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2009 21:17:50
|
AlissonGuj
JavaBaby
![[Avatar]](/images/avatar/1df9c0d719c7928c277ca723541ede7a.jpg)
Membro desde: 09/10/2009 20:17:40
Mensagens: 91
Offline
|
não sua sitaxe seria assim
if () {
}else if(){
}else{
}
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2009 22:01:42
|
KamillaaH
What is classpath?
![[Avatar]](/images/avatar/7e6cb5628570987e8f2da936009b4043.jpg)
Membro desde: 08/09/2009 21:06:24
Mensagens: 6
Offline
|
Continua sem aparecer o 1 e o 2... T.T
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/10/2009 23:12:07
|
Alan_XD
Entusiasta Java
Membro desde: 05/06/2009 16:28:33
Mensagens: 20
Offline
|
Oi Camila
Num sei se vai funcionar, mas eu faria assim
Porém, se você quiser manter do jeito que fez pode fazer o seguinte, talvez o retorno do else if esteja invertido
E tire o igual do for senão ele vai dividir o 2 por 2 e vai dar 1.
Tenta usar o debug com breakpoint para verificar, ajuda bastante.
Espero ajudar.
Abraços, Alan
This message was edited 1 time. Last update was at 16/10/2009 23:32:45
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/10/2009 00:13:41
|
KamillaaaH
JavaChild
![[Avatar]](/images/avatar/19e274731cc55cb498afbf940fe33ebb.jpg)
Membro desde: 08/09/2009 19:59:03
Mensagens: 113
Offline
|
Obrigada, Alan! Deu certo!
Só que... eu estava perdendo a precisao dos números, daí alguns que tinha 2.895 era passados como true. Resolvi colocando float em todos, acontece que alguns números ainda continuam com o mesmo problema e eu não consigo idenficar o motivo...
Alguém pode me ajudar?
Obrigada!
No console:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/10/2009 08:25:26
|
Sami Koivu
Virtual Machine Man
![[Avatar]](/images/avatar/a4d8e2a7e0d0c102339f97716d2fdfb6.jpg)
Membro desde: 16/09/2004 09:49:27
Mensagens: 574
Localização: Curitiba-PR
Offline
|
Olá,
Talvez você queira/precisa resolver do seu jeito, provavelmente isso é um exercisio de lógica, e se for o caso, favor ignorar minha sugestão:
No mundo binário, as potências de 2 têm uma caracteristica que é que eles tem exatamente um bit setado, o resto são zeros.
dec 1 = bin 1
dec 2 = bin 10
dec 4 = bin 100
dec 8 = bin 1000
...
e assim pra frente. A classe Integer tem um método que diz quantos bits setados tem num número. Portanto seu método poderia ser definido assim (ele funciona para valores positivos. Só dá resultado errado para -214748364 :
[]s,
Sami
|
(Slightly) Random Broken Thoughts on Java Security |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/10/2009 08:29:14
|
KamillaaaH
JavaChild
![[Avatar]](/images/avatar/19e274731cc55cb498afbf940fe33ebb.jpg)
Membro desde: 08/09/2009 19:59:03
Mensagens: 113
Offline
|
Ótimo! Deu certinho... Obrigada!
Mas... eu ainda queria saber o motivo de eu estar perdendo a precisão naquela outra implementação... Achei bastante estranho pois a precisão só é perdida para determinados números... =S
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/10/2009 10:54:12
|
Sami Koivu
Virtual Machine Man
![[Avatar]](/images/avatar/a4d8e2a7e0d0c102339f97716d2fdfb6.jpg)
Membro desde: 16/09/2004 09:49:27
Mensagens: 574
Localização: Curitiba-PR
Offline
|
Olá,
Acho que está o problema está na lógica.
Para mim, isso parece dar o resultado correto:
Eu tirei o cont-- do for, e invertei a regra do if final. (linha 15 nesse exemplo)
[]s,
Sami
|
(Slightly) Random Broken Thoughts on Java Security |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/10/2009 11:26:39
|
KamillaaaH
JavaChild
![[Avatar]](/images/avatar/19e274731cc55cb498afbf940fe33ebb.jpg)
Membro desde: 08/09/2009 19:59:03
Mensagens: 113
Offline
|
Sim, deu certo! =D
Só que o 1 e o 2 continuam de fora... T.T
This message was edited 2 times. Last update was at 18/10/2009 11:31:05
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/10/2009 11:39:31
|
KamillaaaH
JavaChild
![[Avatar]](/images/avatar/19e274731cc55cb498afbf940fe33ebb.jpg)
Membro desde: 08/09/2009 19:59:03
Mensagens: 113
Offline
|
HAHA! Consegui! xD
Obrigada, gente!
This message was edited 1 time. Last update was at 18/10/2009 12:49:11
|
|
|
 |
|
|