diff options
1 files changed, 126 insertions, 0 deletions
| -rw-r--r-- | Sem. 01/task1/task1.cpp | 126 |
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; + +} |
