123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #pragma once
- #include "geometry.h"
- class Triangle_exception{};
- class Triangle :
- public Geometry_figure
- {
- private:
- double sides[3];
- void calc_sides();
-
- public:
- template <class value_class> Triangle(value_class A, value_class B, value_class C);
- template <> Triangle(Point A, Point B, Point C);
- template <class value_class> Triangle(value_class x1, value_class y1, value_class x2, value_class y2, value_class x3, value_class y3 );
- Triangle();
- double calc_area();
- double calc_perimeter();
- void name();
- };
- template<class value_class>
- inline Triangle::Triangle(value_class A, value_class B, value_class C)
- {
- is_incorrect = (A <= 0) || (B <= 0) || (C <= 0);
- sides[0] = (double)(A);
- sides[1] = (double)(B);
- sides[2] = (double)(C);
- is_incorrect = is_incorrect || (sides[0] > sides[1] + sides[2]) || (sides[2] > sides[1] + sides[0]) || (sides[1] > sides[2] + sides[0]);
- if (is_incorrect)
- throw Triangle_exception();
-
- }
- template<class value_class>
- inline Triangle::Triangle(value_class x1, value_class y1, value_class x2, value_class y2, value_class x3, value_class y3)
- {
- dots.push_back(Point(x1,y1));
- dots.push_back(Point(x2, y2));
- dots.push_back(Point(x3, y3));
- calc_sides();
- }
- template <>
- inline Triangle::Triangle(Point A, Point B, Point C)
- {
- dots.push_back(A);
- dots.push_back(B);
- dots.push_back(C);
- calc_sides();
- }
|