Mandar um cafézinho para o programador:


Me ajude a transformar café em código!

Triângulo Equilátero, Isósceles ou Escaleno? Exercício de C++

Neste tutorial de C++, vamos resolver a seguinte questão de nossa lista de exercícios:

  • 10. Faça um programa que recebe os três lados de um triângulo e diz se é equilátero, isósceles ou escaleno.

Tipos de triângulo em C++

Existem três tipos de triângulo:

  1. Equilátero: todos os lados são iguais
  2. Isósceles: apenas dois lados são iguais
  3. Escaleno: todos os lados são diferentes


Então tudo que temos que fazer é pedir três lados de um triângulo, e sair testando se os lados são todos iguais, ou tem dois iguais ou se é tudo diferente.

Uma maneira de fazer é testando se é tudo igual em um IF, pra saber se é equilátero:

  • if( (a==b) && (b==c) )

Depois se são todos diferentes, pra saber se é escaleno:

  • if( (a!=b) && (a!=c) && (b!=c) )


Se não for nenhuma das alternativas acima, é porque ele é isósceles.
Nosso código fica assim:
#include <iostream>
using namespace std;

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

    cout << "Lado a: ";
    cin >> a;

    cout << "Lado b: ";
    cin >> b;

    cout << "Lado c: ";
    cin >> c;

    if( (a==b) && (b==c) )
        cout<<"Equilátero\n";
    else if( (a!=b) && (a!=c) && (b!=c))
        cout<<"Escaleno\n";
    else
        cout<<"Isósceles\n";

}

Equilátero, Isósceles ou Escaleno ?

Uma coisa interessante sobre a programação é que o código é uma espécie de impressão digital.
Cada um faz do seu jeito, cada um tem seus métodos, linhas de raciocínio e criatividade.

As vezes é comum fazermos um código grande, feio e confuso.
Depois, vemos alguém usando metade das linhas que usamos, fazendo algo bem mais bonito e abrangente.

Por isso a importância de estudar por livros, sites, tutoriais e códigos de outras pessoas, pra 'pegar' o raciocínio dos outros. Nunca perca esse costume, ok?

Vamos para mais uma solução.
Primeiro, vamos testar se tem dois lados iguais:

  • (a==b) || (a==c) || (b==c)


Se tiver, das duas uma: ou é equilátero ou só isósceles.
Então, testamos se os três lados são iguais:

  • (a==b) && (b==c)


Se for, dizemos que é equilátero. Senão, cai no ELSE aninhado e dizemos que é isósceles.

Se não tiver pelo menos dois lados iguais, é escaleno.
Veja:

#include <iostream>
using namespace std;

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

    cout << "Lado a: ";
    cin >> a;

    cout << "Lado b: ";
    cin >> b;

    cout << "Lado c: ";
    cin >> c;

    if( (a==b) || (a==c) || (b==c))
        if( (a==b)&&(b==c) )
            cout<<"Equilátero\n";
        else
            cout<<"Isósceles\n";
    else
        cout<<"Escaleno\n";

}

Teste hacker C++


Hacker é aquele que acha brechas, erros, problemas em códigos.
Tem um problema no código acima: as condições de existência de um triângulo.

Não é só digitar três valores e temos um triângulo, não.
Pesquise sobre as condições de existência de um triângulo, e antes de decidir se é equilátero, isósceles ou escaleno, veja se o triângulo pode sequer existir.

Poste seu código nos comentários.

3 comentários:

  1. /*
    Faça um programa que recebe os três lados de um triângulo
    e diz se é equilátero, isósceles ou escaleno.
    */
    #include

    using namespace std;

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

    cout << "\nLado A: ";
    cin >> a;
    cout << "\nLado B: ";
    cin >> b;
    cout << "\nLado C: ";
    cin >> c;

    if((a + b <= c) || (a + c <= b ) || (b + c <= a))
    cout << "\nNao e um triangulo.";
    else if ((a == b) && (a == b) && (b == c))
    cout << "\nTriangulo equilatero.";
    else if((a == b ) || (a == c) || (b == c)){
    cout << "\nTriangulo isosceles.";
    }else
    cout << "\nTriangulo escaleno.";
    return 0;
    }

    ResponderExcluir
  2. algoritmo "Triangulos"
    var
    L1, L2, L3: Real
    EQ, ES, IS: Logico
    inicio
    Escreva("Digite o primeiro lado: ")
    Leia(L1)
    Escreva("Digite o segundo lado: ")
    Leia(L2)
    Escreva("Digite o terceiro lado: ")
    Leia(L3)
    EQ <- (L1 = L2) e (L2 = L3)
    ES <- (L1 <> L2) e (L2 <> L3) e (L1 <> L3)
    IS <- (EQ <> Verdadeiro) e (ES <> Verdadeiro)
    Escreval ("O triangulo é EQUILATERO? ", EQ)
    Escreval ("O triangulo é ESCALENO? ", ES)
    Escreval ("O triangulo é ISÓSCELES?", IS)
    fimalgoritmo

    ResponderExcluir
  3. algoritmo "Triangulos"
    var
    L1, L2, L3: Real
    EQ, ES, IS: Logico
    inicio
    Escreva("Digite o primeiro lado: ")
    Leia(L1)
    Escreva("Digite o segundo lado: ")
    Leia(L2)
    Escreva("Digite o terceiro lado: ")
    Leia(L3)
    EQ <- (L1 = L2) e (L2 = L3)
    ES <- (L1 <> L2) e (L2 <> L3) e (L1 <> L3)
    IS <- (EQ <> Verdadeiro) e (ES <> Verdadeiro)
    Escreval ("O triangulo é EQUILATERO? ", EQ)
    Escreval ("O triangulo é ESCALENO? ", ES)
    Escreval ("O triangulo é ISÓSCELES?", IS)
    fimalgoritmo

    ResponderExcluir

Ajude o C++ Progressivo

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo