miket 11 ay önce
ebeveyn
işleme
10db1b6fd9
4 değiştirilmiş dosya ile 173 ekleme ve 0 silme
  1. 35 0
      geometry/Rectangle.cpp
  2. 43 0
      geometry/Rectangle.h
  3. 36 0
      geometry/Triangle.cpp
  4. 59 0
      geometry/Triangle.h

+ 35 - 0
geometry/Rectangle.cpp

@@ -0,0 +1,35 @@
+#include "Rectangle.h"
+
+void Rectangle::calc_sides()
+{
+	sides[0] = dots[0].calc_distance(dots[1]);
+	sides[1] = dots[1].calc_distance(dots[2]);
+}
+
+Rectangle::Rectangle()
+{
+}
+
+double Rectangle::calc_area()
+{
+	return sides[0] * sides[1];
+}
+
+double Rectangle::calc_perimeter()
+{
+	return sides[0] * 2 + sides[1] * 2;
+}
+
+void Rectangle::name()
+{
+	cout << "Rectangle" << endl;
+}
+
+Rectangle::Rectangle(Point A, Point B, Point C, Point D)
+{
+	dots.push_back(A);
+	dots.push_back(B);
+	dots.push_back(C);
+	dots.push_back(D);
+	calc_sides();
+}

+ 43 - 0
geometry/Rectangle.h

@@ -0,0 +1,43 @@
+#pragma once
+#include "geometry.h"
+class Rectangle :
+	public Geometry_figure
+{
+private:
+	double sides[2];
+	void calc_sides();
+
+	
+public:
+	template <class value_class> Rectangle(value_class x1, value_class y1, value_class x2, value_class y2, value_class x3, value_class y3,value_class x4, value_class y4);
+	template <class value_class> Rectangle(value_class A, value_class B);
+	Rectangle();
+	Rectangle(Point  A, Point  B, Point  C, Point D);
+
+
+	double calc_area();
+	double calc_perimeter();
+	void name();
+
+
+
+};
+
+template<class value_class>
+inline Rectangle::Rectangle(value_class x1, value_class y1, value_class x2, value_class y2, value_class x3, value_class y3, value_class x4, value_class y4)
+{
+	dots.push_back( Point(x1,y1));
+	dots.push_back(Point(x2, y2));
+	dots.push_back(Point(x3, y3));
+	dots.push_back(Point(x4, y4));
+	calc_sides();
+}
+
+template<class value_class>
+inline Rectangle::Rectangle(value_class A, value_class B)
+{
+	sides[0] = (double)(A);
+	sides[1] = (double)(B);
+
+
+}

+ 36 - 0
geometry/Triangle.cpp

@@ -0,0 +1,36 @@
+#include "Triangle.h"
+#include <cmath>
+
+void Triangle::calc_sides()
+{
+	sides[0] = dots[0].calc_distance(dots[1]);
+	sides[1] = dots[1].calc_distance(dots[2]);
+	sides[2] = dots[2].calc_distance(dots[0]);
+	is_incorrect = (sides[0] > sides[1] + sides[2]) || (sides[2] > sides[1] + sides[0]) || (sides[1] > sides[2] + sides[0]);
+
+
+
+}
+
+
+Triangle::Triangle()
+{
+}
+
+double Triangle::calc_area()
+{
+	double p = sides[0] + sides[1] + sides[2];
+	p /= 2;
+
+	return sqrt(p*(p-sides[0])*(p-sides[1])*(p-sides[2]));
+}
+
+double Triangle::calc_perimeter()
+{
+	return sides[0]+sides[1]+sides[2];
+}
+
+void Triangle::name()
+{
+	cout << "Triangle" << endl;
+}

+ 59 - 0
geometry/Triangle.h

@@ -0,0 +1,59 @@
+#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 <class value_class> Triangle(value_class x1, value_class y1, value_class x2, value_class y2, value_class x3, value_class y3 );
+	Triangle();
+	template <>  Triangle(Point  A, Point  B, Point  C);
+
+	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 <>
+Triangle::Triangle(Point A, Point B, Point C)
+{
+	dots.push_back(A);
+	dots.push_back(B);
+	dots.push_back(C);
+	calc_sides();
+
+}