Kurs maturalny z języka angielskiego!
kurs-maturalny-jezyk-angielski

PROGRAMOWANIE I ALGORYTMY

Zajęcia maturalne z informatyki
Olimpiada Informatyczna Juniorów
    Prowadzący: Marcin Kasprowicz
  • właściciel serwisu algorytm.edu.pl
  • wrzesień 2024 — start zajęć
  • 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:

$$\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}$$

trójkąt

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;
}