Dúvida teorema de pítagoras

3 respostas
ucastrobr

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:

/*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

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?

3 Respostas

Richard_Mendes_Madur

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.

Richard_Mendes_Madur

Ah, Com relação a lógica, acho que está errado!
a fórmula do teorema de pitágoras é:

O quadrado da hipotenusa é igual a soma dos quadrados dos catetos.

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!

ucastrobr

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.

/*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
Criado 2 de setembro de 2008
Ultima resposta 2 de set. de 2008
Respostas 3
Participantes 2