Editorial for ¿Triángulo válido?
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Para este problema, utilizamos el teorema de Desigualdad Triangular, que resumidamente establece que en todo triángulo la suma de las longitudes de dos lados cualesquiera es siempre mayor a la longitud del lado restante.
Nuestro objetivo es crear un código en C++ que, dado un triángulo, determine si
- La suma de las longitudes de 2 lados cualesquiera es menor o igual a la longitud del restante → No se puede formar el triángulo.
- La suma de las longitudes de 2 lados cualesquiera es menor o igual a la longitud del restante → Sí se puede formar el triángulo.
Ejemplo de código
#include <iostream>
using namespace std;
int main(){
//Definir los lados del triángulo como enteros
int a;
int b;
int c;
cin>>a>>b>>c; //Recibir las 3 variables
//Como un triángulo tiene 3 lados, tenemos que evaluar cada lado como si fuera el restante.
if(a+b<=c || a+c<=b || b+c<=a){ // Si la suma de las longitudes de 2 lados cualesquiera es menor o igual a la longitud del restante, no se puede formar el triángulo.
cout<<"NO"; //Imprimir "NO"
return 0; //Regresar main con 0 (apagar el programa)
}
//Si no se pudiera formar el triángulo el programa ya se habría acabado, por eso, si llega a este punto, sí se puede formar el triángulo.
cout<<"SI"; //Imprimir "SI"
return 0; //Regresar main con 0 (apagar el programa)
}
Explicación del código
Al principio del código, #include <iostream> sirve para incluir la librería iostream, que nos permite utilizar las funciones cin y cout, utilizadas respectivamente para recibir datos e imprimir información en la consola. La segunda línea, using namespace std;, sirve para poder utilizar cout y cin directamente, en vez de tener que escribir std::cout y std::cin cada vez.
Después de estas dos líneas introductorias, definimos nuestra función principal, main, como una función de tipo entero (int). Las funciones se definen utilizando paréntesis para colocar sus parámetros y llaves {} para indicar qué instrucciones pertenecen a ellas. La función que se ejecuta al iniciar un programa en C++ siempre debe llamarse main; de otra forma, el programa no podría ejecutarse correctamente.
Dentro de main, definimos tres variables enteras llamadas a, b y c, que representan las longitudes de los tres lados del triángulo:
int a;
int b;
int c;
Después utilizamos cin >> a >> b >> c; para recibir los tres valores introducidos por el usuario y guardarlos en las variables correspondientes. Por ejemplo, si el usuario escribe 3 4 5, entonces a tendrá el valor 3, b tendrá el valor 4 y c tendrá el valor 5.
A continuación tenemos una estructura condicional if:
if(a+b<=c || a+c<=b || b+c<=a)
Esta condición comprueba si el triángulo puede existir. Como un triángulo tiene tres lados, debemos comprobar las tres posibles combinaciones de dos lados contra el lado restante.
a+b<=ccomprueba si la suma deaybes menor o igual quec.a+c<=bcomprueba si la suma deayces menor o igual queb.b+c<=acomprueba si la suma debyces menor o igual quea.
El operador || significa OR (o). Por lo tanto, la condición completa será verdadera si al menos una de las tres condiciones se cumple. Si alguna suma es menor o igual que el tercer lado, no es posible formar un triángulo.
Por ejemplo, si tenemos 2 3 5, se cumple 2+3<=5, porque 5<=5 es verdadero. Por lo tanto, no se puede formar un triángulo y el programa entra al if.
Dentro del if encontramos:
cout<<"NO";
return 0;
cout << "NO"; imprime NO en la consola para indicar que los tres lados no pueden formar un triángulo. Después, return 0; termina inmediatamente la función main y, por lo tanto, termina la ejecución del programa. El 0 indica que el programa terminó correctamente.
Si ninguna de las tres condiciones del if se cumple, significa que la suma de cualquier par de lados es mayor que el lado restante. Por lo tanto, sí se puede formar un triángulo. En ese caso, el programa continúa con la siguiente instrucción:
cout<<"SI";
Esta instrucción imprime SI en la consola.
Finalmente tenemos:
return 0;
Al igual que el return 0 anterior, esta instrucción termina la función main e indica que el programa terminó correctamente.
En resumen, el programa recibe tres lados, comprueba las tres desigualdades necesarias para formar un triángulo y utiliza una condición if para determinar el resultado. Si alguna de las tres sumas es menor o igual que el tercer lado, imprime NO; de lo contrario, imprime SI.
Comments