Thiago Faria 0 Denunciar post Postado Abril 3, 2006 Um triângulo retângulo pode ter lados que sejam todos inteiros. O conjunto de três valores inteiros para os lados de um triângulo retângulo é chamado números de Pitágoras. Esses três lados devem satisfazer o relacionamento de que a soma dos quadrados dos dois lados (catetos) deve ser igual ao quadrado do terceiro lado (hipotenusa).Faça um programa em Pascal que;a) determine todos os números de Pitágoras, cujo quadrado da hipotenusa seja menor ou igual à Limite;B) imprima, para cada conjunto encontrado, os três valores inteiros, seguidos da mensagem “ são números de Pitágoras”;c) o valor de Limite é menor ou igual 10000, e deverá ser fornecido através de uma unidade de entrada (monitor).Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Faria 0 Denunciar post Postado Abril 3, 2006 Consegui calcular a hipotenusa conforme o limite informado, agora preciso descobrir os catetos, como faço, alguem pode me ajudar???program hip_1;uses crt; var hip:real; var val:real; var lim:integer; var i:integer; var cat1,cat2:real; begin clrscr; hip:=0; val:=0; write('Informe o valor limite: '); read(lim); If lim <=10000 then For i:=1 to lim do begin val:=val+1; hip:=sqrt(sqr(val)); writeln('Hipotenusa do triangulo: ',hip:5:2); end else writeln('O limite deve ser menor que 10.000!'); readkey; end. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Faria 0 Denunciar post Postado Abril 5, 2006 Alguem pode me ajudar?? Compartilhar este post Link para o post Compartilhar em outros sites
japan 0 Denunciar post Postado Abril 5, 2006 Estuda na Uni-BH????Dica: você vai precisar de no minimo dois laços Compartilhar este post Link para o post Compartilhar em outros sites
Palc 0 Denunciar post Postado Abril 6, 2006 beleza Thiago, Vamos por partes, 1º. - desenvolva (pense) o algorítmo (estratégia) da solução usando o q você conhece de matemática, neste caso usaremos matemática pq trata de números etc etc, mas pode ser qq coisa; 2º. - teste o algorítmo a mão mesmo ou usando um programinha bem simples; 3º. - monte o programa numa linguagem, em Pascal, neste caso; 4º. - teste o programa ou mesmo faça um outro programa mais simples q teste os resultados obtidos. A 1ª. parte ficaria assim ... Para simplificar o texto vamos colocar nomes curtos nas variáveis do problema: a = cateto b = cateto h = hipotenusa LL = limite, fixado em 10.000 Da matemática a gente sabe: a, b e h pertencem ao conjunto dos números naturais sem o zero |N* ( o zero está fora pq se a=0 ou b=0 não temos triângulo http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif ) a^2 + b^2 = h^2 relação entre os lados de um triângulo retângulo ( http://forum.imasters.com.br/public/style_emoticons/default/clap.gif pro Pitágoras q descobriu isso) h^2 < LL Como LL = 10.000 então h < 100 Agora o mais importante, note que: a e b SEMPRE são menores que h ( a<h e b<h ) isto vai acelerar nosso algorítmo http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif logo logo você vai ver como. Para fixar melhor as idéias, os valores que h pode ser são: 1, 2, 3, 4, ... 98, 99, 100. Os valores que a ou b podem ser são: 1, 2, 3, 4, 5, ... (h-3), (h-2), (h-1) pois a<h e b<h SEMPRE ! Entendido ? Não precisa variar a de 1 até 100 ! Isso vai nos poupar muuuito tempo ! Por exemplo: 1) Se h=1 Então não existe a e b, pertencentes ao |N*, que a^2+b^2=1. Pois caso a=0, b=1 mas a não pode ser zero pq assim não existe triângulo ! a=b=1/raiz(2) também seria uma solução mas aí nem a nem b pertencem ao |N* ! 2) Se h=2 a pode ser: 1 ... só 1 mesmo :P b pode ser: 1 ... também só 1 mesmo, pois h=2 ! Vamos ver se satisfaz a^2+b^2=2^2 ? 1^2 + 1^2 = 2 que é diferente de 2^2 = 4 ! Logo para h=2 também não existe a nem b ! 3) Se h=3 a pode ser: 1 ou 2 b pode ser: 1 ou 2 Vamos calcular b para alguns valores de a, que satisfaçam a^2 + b^2 = 3^2 Se a=1 então b^2 = 9-1 = 8 => b=raiz(8) não pertence ao |N* Se a=2 então b^2 = 9-4 = 5 => b=raiz(5) não pertence ao |N* Óbvio q se fizermos para b o resultado é o mesmo né ! Logo para h=3 também não existe a nem b ! 4) Se h=4 a pode ser: 1, 2 ou 3 b pode ser: 1, 2 ou 3 Vamos calcular b para alguns valores de a, que satisfaçam a^2 + b^2 = 4^2 Se a=1 então b^2 = 16-1 = 15 => b=raiz(15) não pertence ao |N* Se a=2 então b^2 = 16-4 = 12 => b=raiz(12) não pertence ao |N* Se a=3 então b^2 = 16-9 = 7 => b=raiz(7) não pertence ao |N* Logo para h=3 também não existe a nem b ! 5) Se h=5 a pode ser: 1, 2, 3 ou 4 b pode ser: 1, 2, 3 ou 4 Vamos calcular b para alguns valores de a, que satisfaçam a^2 + b^2 = 5^2 Se a=1 então b^2 = 25-1 = 24 => b=raiz(24) não pertence ao |N* Se a=2 então b^2 = 25-4 = 21 => b=raiz(21) não pertence ao |N* Se a=3 então b^2 = 25-9 = 16 => b=raiz(16) = 4 bingo pertence ao |N* http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Se a=4 então b^2 = 25-16 = 9 => b=raiz(9) = 3 bingo pertence ao |N* http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Logo para h=5 existem duas soluções, a=3 e b=4 e outra solução é a=4 e b=3 que na verdade é a mesma coisa http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif Resumindo, 3, 4 e 5 são "números de pitágoras" 6) Se h=6 a pode ser: 1, 2, 3, 4 ou 5 b pode ser: 1, 2, 3, 4 ou 5 Vamos calcular b para alguns valores de a, que satisfaçam a^2 + b^2 = 6^2 Se a=1 então b^2 = 36-1 = 35 => b=raiz(35) não pertence ao |N* Se a=2 então b^2 = 36-4 = 32 => b=raiz(32) não pertence ao |N* Se a=3 então b^2 = 36-9 = 27 => b=raiz(27) não pertence ao |N* Se a=4 então b^2 = 36-16 = 20 => b=raiz(20) não pertence ao |N* Se a=5 então b^2 = 36-25 = 11 => b=raiz(11) não pertence ao |N* Como você pode notar, com 2 laços (como sugerido pelo japan ;) ) podemos organizar o algorítmo da solução assim: 1º. laço - varie h de 2 até 100 ..2º. laço - varie a de 1 até h-1 ....Calcule b=raiz(h^2 - a^2) ....Se b é inteiro então imprima: "a, b e h são números de pitágoras !" ..Passe p/ o próximo a Passe p/ o próximo h Dica 1: para testar se um número X é inteiro, que é o mesmo que pertencer ao |N*, teste X = int(X) ? ;) Dica 2: talvez, devido a arredondamentos, fique meio complicado verificar se b é inteiro, então você pode pegar a parte inteira do b e testar se abs( a^2 + int( b )^2 - h^2 ) < 0,000001 onde: abs(x) é o valor absoluto de x, x sem sinal; int(x) é o valor inteiro de x, sem arredondar 0,000001 é o erro tolerado nos cálculos Usando a dica 2, a solução ficaria assim: 1º. laço - varie h de 2 até 100 ..2º. laço - varie a de 1 até h-1 ....Calcule b=raiz(h^2 - a^2) ....Se abs( a^2 + int( b )^2 - h^2 ) < 0,000001 então imprima: "a, b e h são números de pitágoras !" ..Passe p/ o próximo a Passe p/ o próximo h As 2ª., 3ª. e 4ª. partes ficam p/ você desenvolver http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Esta é uma maneira de resolver o problema, certamente você vai descobrir outras melhores e mais rápidas. Tenta aí. {} Palc Compartilhar este post Link para o post Compartilhar em outros sites