Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 01
diff options
context:
space:
mode:
Commitbd9ffde20d67674041712a6686340b0c619b791b (patch)
Author
 Your Name <you@example.com>
2021-05-15 12:31:51 +0300
Committer
 Your Name <you@example.com>
2021-05-15 12:31:51 +0300
Files044fb2a1d4cf32c970886c2243fc2155eae10078 /Sem. 01
Object-oriented_programming_FMI-bd9ffde20d67674041712a6686340b0c619b791b.tar
Object-oriented_programming_FMI-bd9ffde20d67674041712a6686340b0c619b791b.tar.gz
Object-oriented_programming_FMI-bd9ffde20d67674041712a6686340b0c619b791b.zip
Parenta76f4ac4ee38c4d64f54fa75f7e20b361e2b4102 (diff)
minor fixes
2 files changed, 145 insertions, 108 deletions
-rw-r--r--Sem. 01/task1.cpp127
-rw-r--r--Sem. 01/task1/task1.cpp126
diff --git a/Sem. 01/task1.cpp b/Sem. 01/task1.cpp
index 67ad5b1..e6f4661 100644
--- a/Sem. 01/task1.cpp
+++ b/Sem. 01/task1.cpp
@@ -3,124 +3,35 @@
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)
+bool checkIfObratim(size_t element, size_t Z)
{
- for (int i = 0; i < len-1; i++)
+ for (int i = 1; i < Z; i++)
{
- int currPos = i;
- int min = i;
-
- for (int j = i; j < len; j++)
+ if ((i * element) % Z == 0)
{
- if (areas[j] < areas[min])
- min = j;
+ std::cout << "Obratniq element na " << element << " e " << i << std::endl;
+ return true;
}
-
- if (min != i)
+ }
+ return false;
+}
+size_t countDivisers(size_t Z)
+{
+ size_t count = 0;
+ for (int i = 1; i < Z; i++)
+ {
+ if (checkIfObratim(i,Z))
+ count++;
+ else
{
- swap(areas, i, min);
- swap(triangles, i, min);
+ std::cout << "Neobratim " << i << std::endl;
}
}
+ return count;
}
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;
+ cout << countDivisers(4096) << endl;
}
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;
+
+}