Po wklepaniu odcinków o długosci a, b, c trzeba sprawdzić, czy da się z niego ulepić trojkąt. Będzie dobrym rozwiązaniem jeśli skorzystam z tw. Pitagorasa? Wydaje mi się, że to zadaziała, ale tylko dla trójkąta prostokątego.
Może jest jakis inny algorytm który mógłbym zastosować?
Trójkąt może powstać gdy suma dwóch krótszych boków jest wieksza od tego najdłuższego.. i to musi Ci wystarczyć.
czyli tw. Pitagorasa jest dobre do tego zadania?
@Carlos Spicy-Weener nie tylko najdłuższego, nierówność trójkąta tyczy się wszystkich boków:
|b - c| < a < b + c
@autor pomyśl troszkę... http://pl.wikipedia.org/wiki/Tr%C3%B3jk%C4%85t#Nier.C3.B3wno.C5.9B.C4.87_tr.C3.B3jk.C4.85ta
tw. Pitagorasa mówi o trójkątach prostokątnych to jak ty chcesz to wykorzystać innych typów trójkątów?
@up ucieło CI "b".. ale tak masz racje:)
@gubbi
<quote>|b-c|<a<b+c</quote>
raczej z tego masz skorzystać
thx już wiem :)
Napisałem coś taiego:
#include<iostream>
using namespace std;
int dane(int a, int b, int c)
{
bool x;
if((a+b)>c || (a+c)>b || (b+c)>a)
x=true;
else
x=false;
return x;
}
int main()
{
int a,b,c;
cin>>a>>b>>c;
cout<<dane(a,b,c);
return 0;
}
hmm... jakie nie wprowadze boki, to zawsze znajdzie trójkąt, chyba coś nie tak
bool dane(int a, int b, int c)
{
return (a+b)>c && (a+c)>b && (b+c)>a ;
}
hmm.. CHyba nie do końca rozumiesz operatory logiczne
<code=c++>
int dane(int a, int b, int c)
{
bool x;
if((a+b)>c && (a+c)>b && (b+c)>a)
x=true;
else
x=false;
return x;
}
dzięki! :) Temat można zamknąć.
t0m_k napisał(a)
<code=c++>
int dane(int a, int b, int c)
{
bool x;
if((a+b)>c && (a+c)>b && (b+c)>a)
x=true;
else
x=false;
return x;
}
Powiedz, że żartujesz.
```cpp
inline bool triangle_exist(unsigned int a, unsigned int b, unsigned int c) {
return (a+b)>c && (a+c)>b && (b+c)>a;
}
Myślę,że po prostu dokończył nie zbyt trafny pomysł autora.. Działać działa..:)