Website Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
4 files changed, 179 insertions, 1 deletions
-rw-r--r--README.md2
-rw-r--r--Sem. 01/README.md52
-rw-r--r--Sem. 01/notes_1.pdfbin0 -> 113291 bytes
-rw-r--r--Sem. 01/task1.cpp126
diff --git a/README.md b/README.md
index 243a7fd..6fb903f 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
### Код от �еминарите по СДП - �пец. Компютърни науки - летен �еме�тър 2020/2021
- - **Тема 1** \ No newline at end of file
+ - **Тема 1** Структури. Декалраци� и използване на �труктури. Предговор на н�кои теми от УП (динамична памет, �ортировки). \ No newline at end of file
diff --git a/Sem. 01/README.md b/Sem. 01/README.md
new file mode 100644
index 0000000..b59d8ac
--- /dev/null
+++ b/Sem. 01/README.md
@@ -0,0 +1,52 @@
+
+
+## Ñðóêòóðè
+
+Ñòðóêòóðèòå â C++ ñå èçïîëçâàò çà ãðóïèðàíå íà åëåìåíòè. Åëåìåíòèòå, íàðè÷àíè îùå ÷ëåíîâå, ìîãàò äà áúäàò îò ðàçëè÷åí òèï è ñ ðàçëè÷íà äúëæèíà.
+
+ struct Box
+ {
+ int height;
+ int weight;
+ }
+
+
+### Äåêëàðèðàíå íà îáåêòè îò íîâèÿ òèï
+
+ Box b; //default values to height and weight
+
+ Box b2 = {3, 4} // height = 3, weight = 3;
+
+ Box b3;
+ b3.height = 13;
+ b3.weight = 14;
+
+
+### Ïîäàâàíå âúâ ôóíêöèè
+Àêî íÿìà äà ïðîìåíÿìå îáåêòà ãî ïîäàâàìå ïî **êîíñòàíòíà ðåôåðåíöèÿ.**
+
+ void calculcateArea(const Box& b)
+ {
+ return b.height * b.weight;
+ }
+ Ìîæå è ñàìî ïî **ðåôåðåíöèÿ**, íî òîãàâà ïðîìåíèòå ùå ñå îòðàçÿò âúðõó ïîäàäåíèÿ àðãóìåíò.
+
+
+ void readBox(Box& b)
+ {
+ cin >> b.height >> b.weight;
+ }
+.Ìîæå è äà ãî ïîäàâàìå ïî **êîïèå**.
+
+ Box revertBox(Box b)
+ {
+ int temp = b.height;
+ b.height = b.weight;
+ b.weight = temp;
+
+ return b;
+ }
+**Çàäà÷à**:
+Âõîä: Âúâåæäà ñå öÿëî ÷èñëî **N** è ïîñëå **N** òðèãúãúëíèêà â ðàâíèíàòà, îïðåäåëåíè îò 3 òî÷êè ( 6 êîîðäèíàòè).
+
+Îòïå÷àòàéòå òðèãúëíèöèòå **ñîðòèðàíè ïî ëèöàòà èì.** \ No newline at end of file
diff --git a/Sem. 01/notes_1.pdf b/Sem. 01/notes_1.pdf
new file mode 100644
index 0000000..6110f89
--- /dev/null
+++ b/Sem. 01/notes_1.pdf
Binary files differ
diff --git a/Sem. 01/task1.cpp b/Sem. 01/task1.cpp
new file mode 100644
index 0000000..67ad5b1
--- /dev/null
+++ b/Sem. 01/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;
+
+}