Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, alguém poderia me ajuda na construção desse programa, pois estou meio perdido como fazer na parte de quando apenas um valor for negativo a partir dai nao sei como fazer, a parte de função EhTrianguloRetangulo ja está funcionando.

 

 

2. Escreva um programa em C que utiliza o teorema de Pitágoras para auxiliar na
criação ou verificação de triângulos retângulos. O teorema diz que em um triângulo
retângulo com dois catetos a e b e hipotenusa c, a relação entre esses lados se dá
pela fórmula: �� + �� = ��.
O seu programa deve iniciar solicitando ao usuário para inserir os valores para a, b
e c. De acordo com os valores digitados, o programa deve apresentar as seguintes
saídas:
• Caso o usuário insira valores válidos para todos os lados (�, �, � > �), o
programa deve indicar se esses valores formam ou não um triângulo
retângulo;
o Para isso, crie uma função chamada EhTrianguloRetangulo que
retorna um valor booleano indicando se os parâmetros recebidos
formam ou não o triângulo retângulo;
o Utilize essa função no programa principal;
• Caso um, e apenas um, dos valores inseridos seja inválido (� ⊕ � ⊕ � ≤ �),
o programa deve calcular e apresentar o novo valor desse lado para formar
um triângulo retângulo;
o Crie uma função chamada FormaTrianguloRetangulo que,
recebendo como parâmetros o valor dos três lados, sendo um deles
inválido, calcule e retorne o novo valor desse lado para formar o
triângulo retângulo;
o Essa função deve retornar o número inteiro -1 quando o lado não
pôde ter sido calculado (quando mais de um parâmetro for inválido);
o Utilize essa função no programa principal;
• Caso o usuário insira valores inválidos para mais de um dos lados, o programa
deve apresentar uma mensagem indicando que a entrada é inválida;
o Utilize o retorno da função anterior para verificar essa situação.

 

 

Codigo até o momento:

#include <stdio.h>
#include <math.h>

int EhTrianguloRetangulo(int a, int b, int c){
    int conjunto;

    conjunto = (c * c) == (a * a) + (b * b);


return conjunto;
}
int main(void){

    int cateto1, cateto2, hipotenusa;
    int triangur;

    printf("Digite o primeiro cateto:");
    scanf("%d", &cateto1);
    printf("Digite o segundo cateto:");
    scanf("%d", &cateto2);
    printf("Digite a hipotenusa:");
    scanf("%d", &hipotenusa);

    triangur = EhTrianguloRetangulo(cateto1, cateto2, hipotenusa);

    if (triangur){
        printf("Eh triangulo retangulo");
        return 1;
    }else{
        printf("nao eh triangulo retangulo");
        return 0;
}


return 0;

}


 

  • Solução
Postado

@Leanderson Pinheiro Na função FormaTrianguloRetangulo calcule cada um dos lados como incógnita da equação, p.ex,

int hip = sqrt(a * a + b * b);
int cat_a = sqrt(c * c - b * b);
int cat_b = sqrt(c * c - a * a);

 

Aí compare o valores com os argumentos da função, no caso do cateto a fica assim,

if(cat_a != a){
    if(EhTrianguloRetangulo(cat_a, b, c)){
        return cat_a;
    }
}

 

Se nenhum retornar o valor que forma o triângulo retângulo, sua função deve retornar -1.

  • Curtir 1
Postado

Já que está resolvido. Fiz uma modificação na função que retorna o valor se forma o triangulo retângulo, para testar de o valor é maior que zero e evitar caso de retorno com lado igual a zero.

 

#include <stdio.h>
#include <math.h>

int triret(int a, int b, int c){
    return (c * c) == (a * a) + (b * b);
}

int fmtriret(int a, int b, int c){
    int H = sqrt(a * a + b * b);
    int A = (c * c - b * b);
    int B = (c * c - a * a);
    
    if(A > 0){
        A = sqrt(A);
        if(triret(A, b, c)){return A;}
    }
    if(B > 0){
        B = sqrt(B);
        if(triret(a, B, c)){return B;}
    }
    if(triret(a, b, H)){return H;}
    return -1;
}

int main(){
    int a;
    int b;
    int c;

    printf("a, b, c: ");
    scanf("%d %d %d", &a, &b, &c);

    if(triret(a, b, c)){
        printf("E triangulo retangulo");
    }else{
        int valor = fmtriret(a, b, c);
        if(valor == -1){
            printf("Nao forma triangulo retangulo\n");
        }else{
            printf("Valor para formar = %d\n", valor);
        }
    }
    return 0;
}

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!