miket 11 hónapja
szülő
commit
53af02c7d8
5 módosított fájl, 189 hozzáadás és 15 törlés
  1. 18 0
      geometry/circle.cpp
  2. 39 0
      geometry/circle.h
  3. 17 0
      geometry/elipse.cpp
  4. 41 0
      geometry/elipse.h
  5. 74 15
      geometry/figures.cpp

+ 18 - 0
geometry/circle.cpp

@@ -0,0 +1,18 @@
+#include "circle.h"
+#define _USE_MATH_DEFINES// for C++
+#include <math.h>
+
+double circle::calc_area()
+{
+	return M_PI*radius*radius;
+}
+
+double circle::calc_perimeter()
+{
+	return 2*radius*M_PI;
+}
+
+void circle::name()
+{
+	cout << "circle\n";
+}

+ 39 - 0
geometry/circle.h

@@ -0,0 +1,39 @@
+#pragma once
+#include "geometry.h"
+
+
+class circle_exception {
+};
+
+class circle :
+	public Geometry_figure
+{
+private:
+	Point center;
+	double radius;
+
+
+public:
+	circle() {};
+	template <class value_class> circle(value_class  x, value_class y, value_class R);
+	template <class value_class> circle(Point cent, value_class R);
+	double calc_area();
+	double calc_perimeter();
+	void name();
+		
+};
+
+template<class value_class>
+inline circle::circle(value_class  x, value_class y, value_class R) {
+	center = Point(x, y);
+	radius = (double)R;
+
+}
+
+template<class value_class>
+inline circle::circle(Point cent, value_class R)
+{
+	center = cent;
+	radius = (double)R;
+
+}

+ 17 - 0
geometry/elipse.cpp

@@ -0,0 +1,17 @@
+#include "elipse.h"
+#define _USE_MATH_DEFINES// for C++
+#include <math.h>	
+double elipse::calc_area()
+{
+	return R2*R1*M_PI;
+}
+	
+double elipse::calc_perimeter()
+{
+	return 4*(M_PI*R1*R2+R1-R2)/(R1+R2);
+}
+
+void elipse::name()
+{
+	cout << "elipse \n";
+}

+ 41 - 0
geometry/elipse.h

@@ -0,0 +1,41 @@
+#pragma once
+#include "geometry.h"
+class elipse :
+	public Geometry_figure
+{
+private:
+	double R1, R2;
+	Point center;
+
+public:
+
+	template <class value_class>  elipse(value_class x, value_class y, value_class a, value_class b);
+	template <class value_class>  elipse(Point c, value_class a, value_class b);
+	elipse() {};
+
+	double calc_area();
+	double calc_perimeter();
+	void name();
+
+
+
+
+
+
+};
+
+template<class value_class>
+inline elipse::elipse(value_class x, value_class y, value_class a, value_class b)
+{
+	center = Point(x, y);
+	R1 = (double)a;
+	R2 = (double)b;
+}
+
+template<class value_class>
+inline elipse::elipse(Point c, value_class a, value_class b)
+{
+	center = c;
+	R1 = (double)a;
+	R2 = (double)b;
+}

+ 74 - 15
geometry/figures.cpp

@@ -1,21 +1,45 @@
 // figures.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
 //
 #pragma once
-#include <iostream>/*
-#include "Triangle.h"*/
+#include <iostream>
+#include "Triangle.h"
 #include "Rectangle.h"
+#include "polygon.h"
+#include "circle.h"
+#include "elipse.h"
+
 using namespace std;
 
+void chck_trinagle();
+void chck_rectangle();
+void chck_polygon();
+void chck_circle();
+void chck_elipse();
+
 int main()
 {
+    chck_trinagle();
+    chck_rectangle();
+    chck_polygon();
+    chck_circle();
+    chck_elipse();
 
+}
 
+
+void chck_trinagle()
+{    
     ////треугольник
-    //Triangle T;
-    //T = Triangle(Point(0,0),Point(0,5),Point(5,0));
-    //T.name();
-    //cout << T.calc_perimeter() << '\t' << T.calc_area() << endl;
+    Triangle T;
+    T = Triangle(Point(0,0),Point(0,5),Point(5,0));
+    T.name();
+    cout << T.calc_perimeter() << '\t' << T.calc_area() << endl;
+
 
+}
+
+void chck_rectangle()
+{
 
     //прямоугольник
     Rectangle R;
@@ -24,13 +48,48 @@ int main()
     cout << R.calc_perimeter() << '\t' << R.calc_area() << endl;
 }
 
-// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
-// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
+void chck_polygon()
+{
+    vector <int> A;
+    A.push_back(0);
+    A.push_back(0);
+    A.push_back(5);
+    A.push_back(0);
+    A.push_back(5);
+    A.push_back(5);
+    A.push_back(0);
+    A.push_back(5);
+    Polygon p;
+    p = Polygon(A);
+    cout << p.calc_area() << "\t" << p.calc_perimeter() << endl;
 
-// Советы по началу работы 
-//   1. В окне обозревателя решений можно добавлять файлы и управлять ими.
-//   2. В окне Team Explorer можно подключиться к системе управления версиями.
-//   3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
-//   4. В окне "Список ошибок" можно просматривать ошибки.
-//   5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
-//   6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
+}
+
+void chck_circle()
+{
+    Point c = Point(0, 0);
+    int radius = 5;
+
+    circle c1, c2;
+    c1 = circle(c, radius);
+    c2 = circle(0, 0, radius);
+    c1.name();
+    c2.name();
+    cout << "c1 \t" << c1.calc_area() << '\t' << c1.calc_perimeter() << endl;
+    cout << "c2 \t" << c2.calc_area() << '\t' << c2.calc_perimeter() << endl;
+
+}
+
+void chck_elipse()
+{
+    Point c = Point(0, 0);
+    int a = 10, b = 20;
+    elipse el1,el2;
+    el1 = elipse(c, a, b);
+    el2 = elipse(0,0, a, b);
+    el1.name();
+    el2.name();
+    cout << "el1 \t" << el1.calc_area() << '\t' << el1.calc_perimeter() << endl;
+    cout << "el2 \t" << el2.calc_area() << '\t' << el2.calc_perimeter() << endl;
+
+}