Estou fazendo um exercício do livro Java como programar. Ele pede:
Escreva um aplicativo que localize todos os lados de Pitágoras, para lado1, lado2 e a hipotenusa, todos não maiores que 500.
Utilize um for triplamente aninhado que tenta todas as possibilidades, ou força bruta.
Não estou conseguindo fazer, segue o código até onde consegui:
[code]/*Exercício5.21 Escreva um aplicativo que localize todos os lados de Pitágoras, para lado1, lado2 e a hipotenusa, todos não maiores que 500.
Utilize um for triplamente aninhado que tenta todas as possibilidades */
public class TeoremaPitagora {
public static void main (String [ ] args) {
int lado1, lado2, hipotenusa;
for (lado1=1; lado1<=500; lado1++) {
for(lado2=1; lado2<=500; lado2++) {
for(hipotenusa=1; hipotenusa<=500; hipotenusa++) {
if(lado1+lado2==hipotenusa) {
System.out.printf("\n%s %s %s", " lado 1"," lado 2"," hipotenusa");
System.out.printf("\n%d\t %d\t %d\t ",lado1,lado2,hipotenusa);
}
}
}
}
}
}// fim da classe[/code]
Fica dando um loop super rápido não consigo ver nada, será que tem alguma opção de ir parando aos poucos.
Está certo essa lógica?
Tente colocar dentro do seu loop o seguinte trecho de código.
try{
Thread.sleep(1000);// um segundo
} catch(Exception e){}
Acho que deve resolver o seu problema.
Ah, Com relação a lógica, acho que está errado!
a fórmula do teorema de pitágoras é:[quote]O quadrado da hipotenusa é igual a soma dos quadrados dos catetos.[/quote]
Então o seu if deveria ser algo mais ou menos assim:
if(hipotenusa*hipotenusa == (lado1*lado1) + (lado2*lado2)){
//imprimeTrianguloRetangulo()
}
Além disso, lembre-se que a soma dos lados tem que ser maior ou igual ao da hipotenusa!
Se voce utilizar isso, dá para otimizar o seu código.
Espero ter ajudado!
Valeu Madureira essa do try fazer o loop esperar 1 segundo muito legal, e quanto ao código da soma do quadrado dos catetos igual ao quadrado da hipotenusa foi falta de atenção.
Agora vou tirar o main e transformá-lo em POO orientado a objeto.
Muito obrigado!!
Segue o código correto.
[code]/*Exercício5.21 Escreva um aplicativo que localize todos os lados de Pitágoras, para lado1, lado2 e a hipotenusa, todos não maiores que 500.
Utilize um for triplamente aninhado que tenta todas as possibilidades */
public class TeoremaPitagoras {
public static void main (String [ ] args) {
int lado1, lado2, hipotenusa;
for (lado1=1; lado1<=500; lado1++) {
for(lado2=1; lado2<=500; lado2++) {
for(hipotenusa=1; hipotenusa<=500; hipotenusa++) {
if(lado1*lado1+lado2*lado2==hipotenusa*hipotenusa) {//fórmula dos catetos = hipotenusa
System.out.printf("\n%s %s %s", " lado 1"," lado 2"," hipotenusa");
System.out.printf("\n%7d %7d\t %8d ",lado1,lado2,hipotenusa);
try{
Thread.sleep(1000);//executa em tempo de um segundo
} catch(Exception e){}
}
}
}
}
}
}// fim da classe
[/code]