/*
   Budowniczy trojkatow-
   sprawdza czy z 3 podanych odcinkow mozna zbudowac trojkat
   GNU/GPL published
   Author: uosiu at uosiu dot info
*/
#include <iostream>
using namespace std;

int main()
    {
          long int a,b,c;
          int rownoboczny;
          cout << "\nPodaj dlugosc pierwszego odcinka: ";
          cin >> a;
          cout << "\nPodaj dlugosc drugiego odcinka :";
          cin >> b;
          cout << "\nPodaj dlugosc trzeciego odcinka :";
          cin >> c;
          /* SPRAWDZAMY CZY MOZNA ZBUDOWAC TROJKAT */
          if (a+b>c && a+c>b && b+c>a)
             {
                    cout << "\nZ tych odcinkow mozna zbudowac trojkat";
                    /* SPRAWDZAMY CZY TO TROJKAT ROWNOBOCZNY */
                    if (a==b && b==c)
                       {
                             cout << "\nJest to trojkat rownoboczny";
                             rownoboczny=1;
                       }
                    /*
                    JEZELI JUZ WYSWIETLILO NAPIS, ZE
                    TO TROJKAT ROWNOBOCZNY TO NIE WYSWIETLA
                    NAPISU ZE ROWNORAMIENNY
                    */
                    if (rownoboczny!=1)
                       {
                                       if (a==b || a==c || b==c)
                                       {
                                        cout << "\nTo jest trojkat rownoramienny";
                                       }
                       }
                   /*
                   Jezeli dowolna kombinacja zmiennych jest zgodna
                   z twierdzeniem pitagorasa to to jest trojkat prostokatny
                   */
                   if (a*a+b*b==c*c || a*a+c*c==b*b || c*c+b*b==a*a)
                   {
                                   cout << "\nTo jest trojkat prostokatny";
                   }
             }
          else
             {
                    cout << "\nZ tych odcinkow NIE mozna zbudowac trojkata";
             }
    }
