Saber si un triángulo es rectángulo, acutángulo u obtusángulo en C++

Emanuel por medio de un comentario me pidió ayuda para hacer un programa en c++ que nos dijera si un triángulo es rectángulo, acutángulo u obtusángulo pidiendo solamente los lados. El programa me pareció interesante de hacer y pues lo hice🙂

El programa resulta bastante sencillo, pero para deducir cómo hacerlo está un poco complicado. Veamos la siguiente imágen:

Triángulos

El triángulo 1 es un clásico triángulo rectángulo. Si aumentáramos el lado c de 5 a 6 obviamente el ángulo aumentaría y por lo tanto sería un triángulo obtusángulo (2). Si por el contrario, disminuyéramos el lado de c 5 a 4, el ángulo disminuiría y por lo tanto sería un triángulo acutángulo (3).

Sabiendo esto veamos cómo se comporta Pitágoras en cada caso (o sea no él, su teorema):

Si despejamos su famoso teorema obtenemos que a2 + b2 – c2 = 0.

Veamos como se comporta este teorema en nuestro triángulo 1:
32 + 42 - 52 = 0
¡Listo!, ya sabemos que el triángulo es rectángulo, porque el teorema de Pitágoras sólo sirve para triángulos rectángulos.

Ahora con el triángulo 2 (obtusángulo):
32 + 42 - 62 = -11
¡Un número negativo! Con los triángulos obtusángulos el teorema de Pitágoras da números negativos.

Y por último el triángulo 3 (acutángulo):
32 + 42 - 42 = 9
¡Un número positivo! Con los triángulos acutángulos el teorema de Pitágoras da números positivos.

Ahora que ya sabemos cómo identificar cada triángulo nos surge otro problema: El usuario sólo va a introducir tres lados cualquiera, ¿cómo saber cual es a, cual es b y cual es c? Pues no hay forma de saberlo, hay que hacer cada paso tres veces tomando el teorema como a2 + b2 – c2, luego a2 + c2 – b2 y al final b2 + c2 – a2.

Ahora si, veamos el programa:

#include
using namespace std;

int main()
{
    int a, b, c, A, B, C;
    cout <> a;
    cout <> b;
    cout <> c;
    A = (b*b+c*c-a*a);
    B = (a*a+c*c-b*b);
    C = (a*a+b*b-c*c);
    if(A == 0 || B == 0 || C == 0)
        cout < 0 && B > 0 && C > 0)
        cout << "El triangulo es acutangulo. ";
    if(A < 0 || B < 0 || C < 0)
        cout << "El triangulo es obtusangulo. ";

}

La única parte no explicada es la de las condiciones. Si en cualquiera de los tres formas de tomar el teorema nos resulta 0 es rectángulo, por lo tanto se usa ||. Para ser acutángulo, las tres formas del teorema deben ser mayores a 0, se usa &&. Con una sola forma del teorema que resulte menor a 0 es obtusángulo, se usa ||. Para mayor información de esos operadores leer esto: Operadores lógicos es C++.

¿Cómo ven el programita? Está sencillo ¿no? Tal vez después haga una modificación para que además te calcule los ángulos del triángulo.

15 thoughts on “Saber si un triángulo es rectángulo, acutángulo u obtusángulo en C++

  1. hola como se utilizaria la funcion while o if else para preguntar en el programa cuantos triangulos se desea introducir y que de salida te de que tipo de triangulo es cada uno a los cuales le colocaste solo los lados como entrada… este mismo programa solo que para mas de un triangulo

  2. ola me podrias ayudar a diseñar un programa para diferenciar que tipo de triangulo es si isoseles equilatero o roptuso en turboc++

  3. Esta súper genial la información pero necesito los ejemplos para una tarea de geometría que el profesor o los exige

  4. hola que tal me podeis ayudar con unprograma que calcule el area y perimetro de una figura de cuatro lados y diga si es o no cuadrado o rectangulo …solo necesito por lo meos una idea

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s