//функция проверки на правильность. в ходе проверки выясняется, какие из сторон - катеты, какие - гипотенузы. чтобы не повторять эти процедуры - функция выписывает катеты и гипотенузу во внешние переменные public bool IsRightTriangle(out T CathetAOut, out T CathetBOut, out T HypotenuseOut) { T hypotenuse, cathet1, cathet2; if (SideA.CompareTo(SideB) == 1) { hypotenuse = SideA; cathet1 = SideB; } else { cathet1 = SideA; hypotenuse = SideB; } if (hypotenuse.CompareTo(SideC) == 1) { cathet2 = SideC; } else { cathet2 = hypotenuse; hypotenuse = SideC; } try { if (((dynamic)cathet2 * (dynamic)cathet2 + (dynamic)cathet1 * (dynamic)cathet1) == (dynamic)hypotenuse * (dynamic)hypotenuse) { CathetAOut = cathet1; CathetBOut = cathet2; HypotenuseOut = hypotenuse; return(true); } else { CathetAOut = default(T); CathetBOut = default(T); HypotenuseOut = default(T); return(false); } } catch { CathetAOut = default(T); CathetBOut = default(T); HypotenuseOut = default(T); ErrorLog("Type Error! Sides cannot be this types"); return(false); } }
//функция проеврки треугольника на правильность для тестов public bool IsRightTriangle() { T hypotenuse, cathet1, cathet2; if (SideA.CompareTo(SideB) == 1) { hypotenuse = SideA; cathet1 = SideB; } else { cathet1 = SideA; hypotenuse = SideB; } if (hypotenuse.CompareTo(SideC) == 1) { cathet2 = SideC; } else { cathet2 = hypotenuse; hypotenuse = SideC; } try { if (((dynamic)cathet2 * (dynamic)cathet2 + (dynamic)cathet1 * (dynamic)cathet1) == (dynamic)hypotenuse * (dynamic)hypotenuse) { return(true); } else { return(false); } } catch { ErrorLog("Type Error! Sides cannot be this types"); return(false); } }