Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 01 / task1 / task1.cpp
diff options
context:
space:
mode:
1 files changed, 126 insertions, 0 deletions
-rw-r--r--Sem. 01/task1/task1.cpp126
diff --git a/Sem. 01/task1/task1.cpp b/Sem. 01/task1/task1.cpp
new file mode 100644
index 0000000..67ad5b1
--- /dev/null
+++ b/Sem. 01/task1/task1.cpp
@@ -0,0 +1,126 @@
+#include <iostream>
+#include <chrono>
+
+using namespace std;
+
+
+struct point
+{
+ int x;
+ int y;
+};
+void print(const point& ptr)
+{
+ cout << ptr.x << " " << ptr.y << endl;
+}
+point readPoint()
+{
+ int x, y;
+ cin >> x >> y;
+ return{ x, y };
+}
+double getDist(const point& origin, const point& dest)
+{
+ double dx = origin.x - dest.x;
+ double dy = origin.y - dest.y;
+
+ return sqrt(dx*dx + dy*dy);
+}
+
+
+struct triangle
+{
+ point p1;
+ point p2;
+ point p3;
+};
+
+double getArea(const triangle& tr)
+{
+ double sideA = getDist(tr.p1, tr.p2);
+ double sideB = getDist(tr.p2, tr.p3);
+ double sideC = getDist(tr.p3, tr.p1);
+
+ double halfP = (sideA + sideB + sideC) / 2;
+ return sqrt(halfP * (halfP - sideA) * (halfP - sideB) * (halfP - sideC));
+
+}
+
+void print(const triangle& tr)
+{
+ cout << "Point1: ";
+ print(tr.p1);
+ cout << "Point2: ";
+ print(tr.p2);
+ cout << "Point3: ";
+ print(tr.p3);
+ cout << getArea(tr) << endl << endl;
+}
+
+void swap(int * arr, int i, int j)
+{
+ int temp = arr[i];
+ arr[i] = arr[j];
+ arr[j] = temp;
+}
+void swap(triangle* arr, int i, int j)
+{
+ triangle temp = arr[i];
+ arr[i] = arr[j];
+ arr[j] = temp;
+}
+void selectionSort(int* areas, triangle* triangles, int len)
+{
+ for (int i = 0; i < len-1; i++)
+ {
+ int currPos = i;
+ int min = i;
+
+ for (int j = i; j < len; j++)
+ {
+ if (areas[j] < areas[min])
+ min = j;
+ }
+
+ if (min != i)
+ {
+ swap(areas, i, min);
+ swap(triangles, i, min);
+ }
+ }
+}
+int main()
+{
+
+
+ int n;
+ cin >> n;
+
+ triangle* triangles = new triangle[n];
+
+ for (int i = 0; i < n; i++)
+ {
+ point p1 = readPoint();
+ point p2 = readPoint();
+ point p3 = readPoint();
+
+ triangles[i].p1 = p1;
+ triangles[i].p2 = p2;
+ triangles[i].p3 = p3;
+ }
+
+ int* areas = new int[n];
+
+
+ for (int i = 0; i < n; i++)
+ areas[i] = getArea(triangles[i]);
+
+ selectionSort(areas, triangles, n);
+
+ for (int i = 0; i < n; i++)
+ print(triangles[i]);
+
+ delete[] triangles;
+ delete[] areas;
+
+}