Jump to content
  • 0
Alex Douglas

Alguém poderia me ajudar com esse programa em C? A questão é a seguinte :

Question

2. Dados três valores X, Y e Z, verifique se eles podem ser os comprimentos dos lados de um triângulo e, se forem, verifique se é um triângulo eqüilátero, isósceles ou escaleno. Se eles não formarem um triângulo, escreva uma mensagem. Considere que: a) o comprimento de cada lado de um triângulo é menor que a soma dos outros dois lados b) chama-se eqüilátero o triângulo que tem três lados iguais c) denomina-se isósceles o triângulo que tem o comprimento de dois lados iguais d) recebe o nome de escaleno o triângulo que tem os três lados diferentes.

 

 

O meu algoritmo é esse:

 

 

#include <stdio.h>


int main()

{


    /*O comprimento de um lado do triângulo é sempre menor do que a soma dos outros dois.
Eqüilátero > Todos lados iguais
Isósceles > Dois lados iguais
Escaleno > Todos os lados diferentes*/

 

    int l1, l2, l3, triangulo;
    printf("Digite o tamanho do primeiro lado do triangulo: ");
    scanf("%d",&l1);
    printf("Digite o tamanho do segundo lado do triangulo: ");
    scanf("%d",&l2);
    printf("Digite o tamanho do terceiro lado do triangulo: ");
    scanf("%d",&l3);
    printf("\n");
        
        if ((l1 < (l2 + l3)) && (l2 < (l1 + l3)) && (l3 < (l1 + l2)))
        {
            printf("E um triangulo\n");
            triangulo=1;
        }
        else
        {
            printf("Nao e um triangulo\n\n");
                triangulo=0;
        }
        
        if(triangulo==1)
        {
            if((l1==l2)&&(l2==l3))
            { 
                printf("Equilatero\n\n");
            }
            else        
                if(triangulo==1)
                {
                   if(  ((l1==l2)  &&  (l1||l2<!l3))  ||  ((l2==l3)  &&  (l2||l3<!l1)) || ((l3==l1)  &&  (l1||l3<!l2)) )
                    {
                    printf("Isoceles\n\n");
                    }
                }
                else 
                    if(triangulo==1)
                    {
                       if((l1<!l2) && (l1<!l3) && (l2<!l3))
                        {
                        printf("Escaleno");
                        }
                    }    
        }   
    system("pause");
    return 0;
}

                    O erro está aparecendo na última parte, a parte do triangulo escaleno. Eu executo tudo e não aparece nada na parte de escaleno. Eu executo e aparecem os dois primeiros triangulos mas quando eu tento fazer o escaleno não aparece nada. Alguém poderia me ajudar a corrigir esse erro? Porfavor. :'D É de uma lista de exercícios que tenho que terminar o mais rápido possível. kk desde já agradeço. :D

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Eae champs blz?

 

Eu consegui arrumar seu código aqui, e tava bem tretinha msm ein kkk

Enfim, A principio achei que fosse a lógica que tivesse errada, tanto que no código troquei pra uma diferente, mas não funcionou. Em seguida inverti a posição das funções, coloquei o Isoceles por ultimo, e aí ele que parou de funcionar. Sendo assim, suspeitei que aquele monte de if else estivesse confundindo o compilador de alguma forma, então substitui alguns if else por um while que seria ativado caso o triangulo=1 e após a mensagem fosse igual a 0.
E deu certo, segue a parte que eu alterei.

if ((l1 < (l2 + l3)) && (l2 < (l1 + l3)) && (l3 < (l1 + l2)))
        {
            printf("E um triangulo\n");
            triangulo=1;
        }
        else
        {
            printf("Nao e um triangulo\n\n");
                triangulo=0;
        }
        
        while(triangulo==1)
        {
            if((l1==l2)&&(l2==l3))
            { 
                printf("Equilatero\n\n");
                triangulo=0;
            }
            else
                    if((l1 > l2 || l1 < l2) && (l1 > l3 || l1 < l3) && (l2 > l3 || l2 < l3))
                        {
                        printf("Escaleno\n\n");
                        triangulo=0;
                        }
               else        
                       if(  ((l1==l2)  &&  (l1||l2<!l3))  ||  ((l2==l3)  &&  (l2||l3<!l1)) || ((l3==l1)  &&  (l1||l3<!l2)) )
                   {
                        printf("Isoceles\n\n");
                        triangulo=0;
                        }
                   
                }

 Eu não testei a função escaleno com a sua logica, mas suponho que deva funcionar.
 

Abraços!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Geralt96
      Bom dia. Alguém pode me dá uma ajuda pra desenvolver essa questão, por gentileza?

      Aqui está ela: https://projecteuler.net/problem=6

      A soma dos quadrados dos primeiros dez números naturais é: 1² + 2² + ... 10² = 385...
      O quadrado da soma dos dez primeiros números naturais é: (1+2+ ... 10)² = 55² = 3025...
      Portanto, a diferença entre a soma dos quadrados dos primeiros dez números naturais e o quadrado da soma é: 3025 - 385 = 2640.
      Encontre a diferença entre a soma dos quadrados dos primeiros cem números naturais e o quadrado da soma.
    • By Flaviaac
      Boa tarde pessoal,
      gostaria de pedir uma ajuda para criar um evento em um formulário HTML.
       

      Eu tenho um formulário em HTML e PHP,  e nele tem um campo do tipo select e um campo do tipo text(desabilitado).
      Gostaria que ao clicar no campo select e escolher qualquer opção da lista, automaticamente em seguida aparecesse dentro do campo text um valor respectivo a opção escolhida anteriormente.
       
      Exemplo:
      Tenho um campo select com tipos diferentes de materiais (vidro, papel, alumínio, etc.) e no campo text(desabilitado) terei a quantidade de anos que cada material demora a se decompor na natureza. O campo text inicialmente estará vazio, mas quando selecionar o material, aparecerá dentro deste text a quantidade de anos.
       
      obs.: Os valores do campo select e do campo text estão ambos na mesma tabela do banco de dados(MySQL), o campo select com valores string e o campo text com valores inteiros.
       
      Não sei se consegui explicar direito, mas acredito que terei que utilizar javascript para este evento, mas ainda não sei como.
      Alguém tem ideia de como eu poderia fazer isso ou alguma dica?
       
       
      Muito obrigada!!

       
    • By dayvidham
      Olá, atualmente faço parte de uma comunidade brasileira que está imersa em um projeto DeFi de um Token que roda na rede BSC.
      Temos um Token chamado SkyRocketSR criado a 31 dias e ja somos mais de 5000 pessoas interessadas no seu sucesso.
      Estamos em busca de programadores, designers e todos que poderem somar à comunidade de alguma forma.
      Alguém gostaria de saber mais do projeto e quem sabe compor a equipe da linha de frente já que somos uma comunidade?
      Obrigado e contamos com você.

      https://skyrocketsr.com/en/

      Aqui há mais sobre nós!
    • By dayvidham
      Olá, atualmente faço parte de uma comunidade brasileira que está imersa em um projeto DeFi de um Token que roda na rede BSC.
      Temos um Token chamado SkyRocketSR criado a 31 dias e ja somos mais de 5000 pessoas interessadas no seu sucesso.
      Estamos em busca de programadores, designers e todos que poderem somar à comunidade de alguma forma.
      Alguém gostaria de saber mais do projeto e quem sabe compor a equipe da linha de frente já que somos uma comunidade?
      Obrigado e contamos com você.

      https://skyrocketsr.com/en/

      Aqui há mais sobre nós!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.