W tym artykule zajmiemy się problemem nierówności trójkąta.
Czy z trzech podanych liczb reprezentujących długości odcinków można zbudować trójkąt?
Trójkąt będzie istniał tylko wtedy, gdy suma długości dwóch dowolnych odcinków będzie większa niż trzeci:
Rozpatrzmy odcinki a, b, c. Pokaże co się stanie, jeśli powyższy warunek nie będzie spełniony. Załóżmy, że a = 3, b = 4, c = 8.
Odcinki a i b są za krótkie aby stworzyły trójkąt
W sytuacji gdy mamy a = 4, b = 4, c = 8, także nie można zbudować trójkąta, ponieważ odcinki a i b pokryją się z odcinkiem c (taki trójkąt nazywamy zdegenerowanym)
Dopiero dla odcinków a = 3, b = 4, c = 5 można zbudować trójkąt, ponieważ spełnione są wszystkie trzy warunki:
$$\begin{cases} & \text{a+b} >c \\ & \text{a+c} >b \\ & \text{b+c} >a \end{cases}$$
$$\begin{cases} & \text{3+4} >5 \\ & \text{3+5} >4 \\ & \text{4+5} >3 \end{cases}$$
Rozwiązanie w C++:
//algorytm.edu.pl
#include<iostream>
using namespace std;
bool trojkat(int a, int b, int c)
{
return a>0 && b>0 && c>0 && a+b>c
&& a+c>b && b+c>a;
}
int main()
{
int a, b, c;
cout<<"Podaj trzy liczby całkowite: ";
cin>>a>>b>>c;
if(trojkat(a, b, c))
cout<<"Z podanych odcinków można zbudować trójkąt\n";
else
cout<<"Z podanych odcinków nie można zbudować trójkąta\n";
return 0;
}