Rodzaje trójkątów - co jest źle ?

0

Witajcie. To mój drugi dzień nauki C++ i robiąc zadanie ze spoja : https://pl.spoj.pl/problems/RODZ_TRO/ natknąłem się na problem

 #include <iostream>
using namespace std;

int main()
{
	int a, b, c;
	int first, second, third;
	while(cin >> a >> b >> c)
	{

		 if(a > b && a > c)
			if(b > c)
				first = a, second = b, third = c;
			else
				first = a, second = c, third = b;
	     else if (b > a && b > c)
			if(a > c)
				first = b, second = a, third = c;
			else
				first = b, second = c, third = a;
		 else if(c > a && c > b)
			if(a > b)
				first = c, second = a, third = b;
			else
				first = c, second = b, third = a;
		 else if( c == a && c == b)
			 first = second = third = a;
		 else
			 second = third = 5, first = 6;


		if((a+b < c) || (b+c < a) || (c+a < b) )
			cout << "brak\n";
		else
		{
		if( (second * second) + ( third * third) == (first * first) )
			cout << "prostokatny\n";
	    if( (second * second) + ( third * third) > (first * first) )
			cout << "ostrokatny\n";
	    if( (second * second) + ( third * third) < (first * first) )
			cout << "rozwartokatny\n";
		}
	}

	return 0;
}

Wpisując dane wychodzi mi wszystko jak jest na stronie jednak wyskakuje mi że błędna odpowiedź. Da się te warunki jakoś inaczej zapisać ?

P.S nie uwzględniłem, że podany bok nie może być 0 - czy to może przez to ?

0

ok po wpisaniu 2, 2, 4 powinno wyjść brak a mi wychodziło co innego ; ] dodałem warunki sprawdzę czy bd chodzić.

Da się to jakoś krócej zapisać ?

0

zaakceptowało błąd był tutaj :
if((a+b < c) || (b+c < a) || (c+a < b) )
zły warunek..

  • brakowało mi kilku warunków

Nadal ponawiam pytanie czy da sie krócej ?

1

Da się. Na wiki masz wzór |b - c| < a < b + c.
Co do określenia rodzaju to można użyć funkcji trygonometrycznych lub sprawdzenia twierdzenia Pitagorasa (o ile mie się nic nie poj**[CIACH!]**):

  • jeśli a2 + b2 = c2 - prostokątny
  • jeśli a2 + b2 < c2 - rozwartokątny
  • jeśli a2 + b2 > c2 - ostrokątny

1 użytkowników online, w tym zalogowanych: 0, gości: 1