Galera, to no primeiro semestre de mecatronica, tenho aulas de Java e preciso entregar semanalmente trabalhos feitos nessa linguagem.
O ultimo programa q tivemos q fazer foi esse: http://www.cic.unb.br/docentes/facp/cb/CBexer08.html
Eu fiz aqui algo q eu axo q esta certo, porem, o programa insiste em dar erro no nono par da sequencia, o decimo vem certo. Alguem poderia me apontar os eu to fazendo de errado?
Muito obrigado. Fico esperando respostas.
Abraços
EDIT (Thingol) - Pus o tag [ code ] no seu post, por favor use esse tag sempre que postar código, para melhorar a probabilidade de que alguém venha a ler este post e se interessar pelo seu problema.
E você é estudante de engenharia mesmo, tem alguma coisa com os estudantes de engenharia que não se dão bem com a indentação de código - digo isso porque também fui um.
T
tours
Valeu. N tinha visto o botão pra colocar o codigo.
Meio chata essa minha pergunta, mas ja fiz de tudo ao meu alcance, senão n teria vindo aki.
Se alguem conseguir me ajuda vou ficar muito grato.
Abraços
S
Ssalgado
[OFF]
Formei em Mecatrônica, mas meu código é bem identado.
Só não lembro se no inicio do curso era.
[/OFF]
ramilani12
Passa seus int para float
_fs
Bom, não sou estudante de matemática, mas seu código não possui erro. O problema reside no fato que você programou para o loop principal se repetir até a variável r ser incrementada 10 vezes, e o bloco que a incrementa (r++) só é executado 5 vezes, depois aparentemente entra em loop infinito.
T
tours
Fala q n da pra converter float pra long.
Se eu ponho tudo como float, ele da uns numeros muito estranhos, q se vc criar outro programa pra calcular a soma das sequencias, ele n da numeros inguais…
T
tours
Se eu declaro todas as variaveis como int, ele axa os numeros ate o 8, o 9 da pau e o 10 da certo.
N tem pq dar loop infinito, n mudei nada no programa, so o tipo de variavel.
Valeu pela dica.
fmeyer
Quem tava perguntando se java é OO puro ???
Tai um exemplo de Não JAVA não é só OO … :twisted: :twisted: :twisted:
T
thingol
Tours, só uma coisa. Peguei o seu programa e vi que tem um problema no seu algoritmo, mas de desempenho, não lógico. (O programa está logicamente correto).
Como você está fazendo por força bruta, então não é que o programa entrou em loop.
É que depois que você achou as 5 primeiras respostas, a 6a. demora um monte para ser impressa.
Peguei aquelas variáveis b, d e r e deixei como volatile static. Iniciei uma thread que fica imprimindo o valor dessas variáveis a cada segundo. Dá para ver que demora um monte para conseguir executar.
Recomendo que você repense um pouco as suas fórmulas, porque para conseguir os 10 primeiros valores você vai levar um bom tempo em um Pentium 3.7 GHz Extreme Edition.
O seu programa, modificado para eu conseguir entender o que aconteceu:
Mudei seu programa para int em vez de long, e passei uma opção -server para o Java.exe (estou usando JDK 1.5.0_03) - até que executou em tempo razoável (levou quase 5 minutos em um P4 2.8GHz). (Não vou postar aqui os resultados )
Se for rodar o meu programa, como a thread fica em loop infinito, ela não vai sair também. (Mas o seu programa sai do loop.)
T
tours
Caraca, fiquei perdido com as suas modificaçoes. Intao, teoricamente, se eu declarar todas as variaveis como long, uma hora ele vai axar os outros pares?? O algoritimo ta certo, so demora muito pra testar todos os numeros?
Alguma dica q n utilize objetos?? To começando agora a aprender metodos e objetos.
Valeus!!
T
thingol
Seu programa está bom como está, só que demora pacas pra funcionar.
Isto aqui eu só pus para monitorar as variáveis b, d e r. Pode ser tirado.
E o tal do static eu só pus por causa da thread que queria monitorar.
Você pode deixar o seu código como estava, é que ele demora muito mesmo.
Use java -cp . -server M0479705T04 para rodar o seu programa, e uma máquina muito boa, e veja o que acontece. Ou então mude o algoritmo.
T
tours
Mas olha os seus ultimos pares, eles estao corretos?? Com int os pares saem relativamente rapidos msm, so q o 9º n vem certo. Se vc poe pra mostrar o resultado das contas com um System.out.println(s+ " " +s2) toda vez q ele axar um par, o 9º imprime um n negativo
T
thingol
Hum, estou refazendo as contas, não tinha reparado no que você falou (que estava fazendo as contas errado)
T
tours
Po, valeu pelas dicas. Fico mais tranquio sabendo q o codigo ta certo.
Valeu!
Abraços
Fiz uma modificação cosmética no seu programa, e vi agora que está demorando mesmo, como você disse.
Talvez você tenha de descobrir um algoritmo melhor
foia
sei naum. cheguei em resultados diferentes. eita muié q gosta de passear !!