#include <stdio.h>
int main() {
int a, b, c, aux, achou = 0, k, incremento, resultado, x, y; //Variáveis a serem utilizadas.
b = 0;
scanf("%d", & a); //Entrada do valor a (mas que no triângulo pode ser tanto o cateto a (ímpar) quanto o cateto b (par).
if (a < 1001) { //Condição para futuro valor de c.
if (a % 2 == 0) //Definindo qual dos catetos é a. Se o cateto par ou o cateto ímpar.
aux = 1;
else aux = 2;
for (int i = 0; c < 1001; i++) { //Laço com condição de c ser até 1000.
b += aux; //Incrementa em b o menor valor possível do cateto.
//Encontrar a raiz de (a*a+b*b)
x = ((a * a) + (b * b));
y = 2; //Índice da raiz.
k = 1;
incremento = 1;
for (float l = 1; l <= x; l = l + incremento) //O incremento será um número inteiro para que o resultado possa também o ser.
{
for (int j = 0; j < y; j++) {
k = k * l;
}
if (x < k) {
resultado = (l - incremento);
break;
} else k = 1;
}
c = resultado;
//Encontrar a raiz de (c*c)-(b*b)
x = (c * c) - (b * b);
y = 2; //Índice da raiz.
k = 1;
incremento = 1;
for (float l = 1; l <= x; l = l + incremento) //O incremento será um número inteiro para que o resultado possa também o ser.
{
for (int j = 0; j < y; j++) {
k = k * l;
}
if (x < k) {
resultado = (l - incremento); //resultado será raiz((c*c)-(b*b).
break;
} else k = 1;
}
if (a == resultado) { //Verifica se valor c e b satisfazem a com a resultado da raiz, onde eles aparecem.
printf("(%d, %d, %d)\n", a, b, c); //Caso sim, imprime resultado e registra que um resultado ao menos foi encontrado.
achou = 1;
}
}
} else { //Caso a seja maior que 1000, impossível encontrar valor para c que este seja menor que 1000. (Na verdade 1000 é muito, a poderia ser menor que não encontraríamos valor para c menor que 1000.)
printf("-\n");
}
if (!achou) //Se não encontrou nenhum terno:
printf("-\n");
return 0;
}
terça-feira, 19 de dezembro de 2017
Problema dos ternos possíveis
Compartilhe!
O objetivo do programa em C abaixo é calcular todos os ternos possíveis dado um valor a, que refere-se ao valor de um dos catetos do triângulo retângulo. A ideia é utilizar laços encaixados.