Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 01 / task1.cpp
diff options
context:
space:
mode:
1 files changed, 19 insertions, 108 deletions
-rw-r--r--Sem. 01/task1.cpp127
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;
}