Summary Files Commits Branches @commit @diff @stats
path: root / Year 1 / Object-oriented Programming
diff options
context:
space:
mode:
Commit2d8b66aa122ad7c2c73a778160176e26a8de4ec0 (patch)
Author
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-03-05 15:52:37 +0200
Committer
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-03-05 15:52:37 +0200
Files1c787cd5c447f25f98ce48bbf8288082f6df41cf /Year 1/Object-oriented Programming
uni-projects-2d8b66aa122ad7c2c73a778160176e26a8de4ec0.tar
uni-projects-2d8b66aa122ad7c2c73a778160176e26a8de4ec0.tar.gz
uni-projects-2d8b66aa122ad7c2c73a778160176e26a8de4ec0.zip
Parent36c770ebb53a9a8ce2d89d872498b7201ac03f68 (diff)
Added solutions from oop seminar 1
diff --git a/Year 1/Object-oriented Programming/Solutions Sem. 01/README.md b/Year 1/Object-oriented Programming/Solutions Sem. 01/README.md
new file mode 100644
index 0000000..d8f112c
--- /dev/null
+++ b/Year 1/Object-oriented Programming/Solutions Sem. 01/README.md
@@ -0,0 +1,3 @@
+My solutions to all of the exercises from Seminar 01.
+
+[Task descriptions](https://github.com/Angeld55/Object-oriented_programming_FMI/tree/master/Sem.%2001#%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B8)
diff --git a/Year 1/Object-oriented Programming/Solutions Sem. 01/exercise01.cpp b/Year 1/Object-oriented Programming/Solutions Sem. 01/exercise01.cpp
new file mode 100644
index 0000000..4a6ac1c
--- /dev/null
+++ b/Year 1/Object-oriented Programming/Solutions Sem. 01/exercise01.cpp
@@ -0,0 +1,83 @@
+#include <iostream> // cin, cout
+#include <cmath> // sqrt
+
+struct Point {
+ double x;
+ double y;
+};
+
+double calcDistance(Point a, Point b) {
+ return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
+}
+
+Point cinPoint() {
+ Point temp;
+ std::cin >> temp.x >> temp.y;
+ return temp;
+}
+
+struct Triangle {
+ Point A;
+ Point B;
+ Point C;
+
+ double Area;
+};
+
+double calcArea(Triangle tri) {
+ double a = calcDistance(tri.B, tri.C);
+ double b = calcDistance(tri.A, tri.C);
+ double c = calcDistance(tri.A, tri.B);
+
+ double p = (a + b + c) / 2;
+ return sqrt(p*(p-a)*(p-b)*(p-c)); // Heron's formula
+}
+
+Triangle createTriangle(Point A, Point B, Point C) {
+ return { A, B, C, calcArea({A, B, C}) };
+}
+
+Triangle cinTriangle() {
+ Point tempA = cinPoint(),
+ tempB = cinPoint(),
+ tempC = cinPoint();
+ return createTriangle(tempA, tempB, tempC);
+}
+
+void coutTriangle(Triangle tri) {
+ std::cout << "(" << tri.Area << ")" << std::endl;
+}
+
+int cmpByArea(Triangle tri1, Triangle tri2) {
+ return (tri1.Area > tri2.Area) ? 1 : ((tri1.Area < tri2.Area) ? -1 : 0);
+}
+
+void sortTriangleArr(Triangle* triangles, int N, int (compare)(Triangle, Triangle)) {
+ int indOfSmallest = 0;
+ for (int i = 0; i < N - 1; i++, indOfSmallest = i) {
+ for (int j = i + 1; j < N; j++) {
+ if (compare(triangles[j], triangles[indOfSmallest]) < 0)
+ indOfSmallest = j;
+ }
+
+ Triangle temp = triangles[i];
+ triangles[i] = triangles[indOfSmallest];
+ triangles[indOfSmallest] = temp;
+ }
+}
+
+int main() {
+ int N;
+ std::cin >> N;
+
+ Triangle* triangles = new Triangle[N];
+ for (int i = 0; i < N; i++)
+ triangles[i] = cinTriangle();
+
+ sortTriangleArr(triangles, N, cmpByArea);
+
+ for (int i = 0; i < N; i++)
+ coutTriangle(triangles[i]);
+
+ delete[] triangles;
+};
diff --git a/Year 1/Object-oriented Programming/Solutions Sem. 01/exercise02.cpp b/Year 1/Object-oriented Programming/Solutions Sem. 01/exercise02.cpp
new file mode 100644
index 0000000..78b7616
--- /dev/null
+++ b/Year 1/Object-oriented Programming/Solutions Sem. 01/exercise02.cpp
@@ -0,0 +1,36 @@
+#include <iostream>
+
+struct Rational {
+ int m;
+ int n;
+};
+
+Rational sum(Rational a, Rational b) {
+ int divisor = a.n * b.n;
+ return { a.m * divisor + b.m * divisor, divisor };
+}
+
+Rational sub(Rational a, Rational b) {
+ b.m *= -1;
+ return sum(a, b);
+}
+
+Rational mult(Rational a, Rational b) {
+ return { a.m * b.m, a.n * b.n };
+}
+
+Rational div(Rational a, Rational b) {
+ int temp = b.m;
+ b.m = b.n;
+ b.n = temp;
+
+ return mult(a, b);
+}
+
+bool isValid(Rational a) {
+ return a.n != 0;
+}
+
+bool isWholeNumber(Rational a) {
+ return a.n % a.m == 0;
+}