Programowanie i algorytmy

KONKURS FRAKTAL

fraktal

VI edycja konkursu programistycznego

FRAKTAL

19-20 listopad 2016

czytaj więcej

Nierówność trójkąta

W tym artykule zajmiemy się problemem nierówności trójkąta.

Problem

Czy z trzech podanych liczb reprezentujących długości odcinków można zbudować trójkąt?

Rozwiązanie

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 abc. 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 ab są za krótkie aby stworzyły trójkąt

nierówność trójkąta

 

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)

trójkąt zdegenerowany

Dopiero dla odcinków a = 3, b = 4, c = 5 można zbudować trójkąt, ponieważ spełnione są wszystkie trzy warunki:

 

{tex}\begin{cases} & \text{a+b} >c \\ & \text{a+c} >b \\ & \text{b+c} >a \end{cases}{/tex}

{tex}\begin{cases} & \text{3+4} >5 \\ & \text{3+5} >4 \\ & \text{4+5} >3 \end{cases}{/tex}

trójkąt

Rozwiązanie w C++:

#include<iostream>
#include<cstdlib>
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";
 
    system("pause");
    return 0;
}