Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commitf5e0395e33d032f185197905c8c52c3ead1eb493 (patch)
Author
 Syndamia <kamen.d.mladenov@protonmail.com>
2021-12-13 14:05:32 +0200
Committer
 Syndamia <kamen.d.mladenov@protonmail.com>
2021-12-13 14:05:32 +0200
Filesc268a51150165c69096b3ff955dbdcff64a34398
uni-projects-f5e0395e33d032f185197905c8c52c3ead1eb493.tar
uni-projects-f5e0395e33d032f185197905c8c52c3ead1eb493.tar.gz
uni-projects-f5e0395e33d032f185197905c8c52c3ead1eb493.zip
Parent0028c1da2148e74b17d4e935c7d50a237e9324e6 (diff)
Added todays practice
1 files changed, 156 insertions, 0 deletions
-rw-r--r--Year 1/Programming introduction/Practice-13.12.2021.cpp156
diff --git a/Year 1/Programming introduction/Practice-13.12.2021.cpp b/Year 1/Programming introduction/Practice-13.12.2021.cpp
new file mode 100644
index 0000000..20c04f1
--- /dev/null
+++ b/Year 1/Programming introduction/Practice-13.12.2021.cpp
@@ -0,0 +1,156 @@
+#include <iostream>
+
+using namespace std;
+
+// Напишете функция с тип void plusFive(int* a);, която добавя 5 към подадена
+// стойност.
+
+void plusFive(int *a) {
+ *a += 5;
+}
+
+void ex1() {
+ int a;
+ cin >> a;
+
+ plusFive(&a);
+
+ cout << a << endl;
+}
+
+// Задача втора:
+// Да се обходи матрица чрез указателна аритметика.
+
+void cinMatrix(int *matrix, int width, int height) {
+ for (int i = width * height; i > 0; i--)
+ cin >> *(matrix++);
+}
+
+void coutMatrix(int *matrix, int width, int height) {
+ for (int i = width * height - 1; i >= 0; i--) {
+ cout << *(matrix++) << " ";
+ if (i % width == 0) cout << endl;
+ }
+}
+
+void ex2() {
+ const int MAX_SIZE = 256;
+
+ int width, height;
+ cin >> width >> height;
+
+ int matrix[MAX_SIZE][MAX_SIZE];
+ cinMatrix(matrix[0], width, height);
+ coutMatrix(matrix[0], width, height);
+}
+
+// Задача трета:
+// Да се обходи тримерен масив чрез указателна аритметика.
+
+void cinSpace(int *space, int width, int height, int depth) {
+ for (int i = width * height * depth; i > 0; i--)
+ cin >> *(space++);
+}
+
+void coutSpace(int *space, int width, int height, int depth) {
+ for (int i = width * height * depth - 1; i >= 0; i--) {
+ cout << *(space++) << " ";
+ if (i % width == 0 || i % depth == 0) cout << endl;
+ }
+}
+
+void ex3() {
+ const int MAX_SIZE = 64;
+
+ int width, height, depth;
+ cin >> width >> height >> depth;
+
+ int space[MAX_SIZE][MAX_SIZE][MAX_SIZE];
+ cinSpace(space[0][0], width, height, depth);
+ coutSpace(space[0][0], width, height, depth);
+}
+
+// Задача четвърта:
+// Да се напише функция, която намира сумата на две матрици.
+
+void sumMatrices(int *matrix1, int *matrix2, int *sumMatrix, int width, int height) {
+ for (int i = width * height - 1; i >= 0; i--)
+ *(sumMatrix++) = *(matrix1++) + *(matrix2++);
+}
+
+void ex4() {
+ const int MAX_SIZE = 256;
+
+ int width, height;
+ cin >> width >> height;
+
+ int matrix1[MAX_SIZE][MAX_SIZE];
+ int matrix2[MAX_SIZE][MAX_SIZE];
+ int sum[MAX_SIZE][MAX_SIZE];
+
+ cinMatrix(matrix1[0], width, height);
+ cinMatrix(matrix2[0], width, height);
+
+ sumMatrices(matrix1[0], matrix2[0], sum[0], width, height);
+
+ coutMatrix(sum[0], width, height);
+}
+
+// Задача пета:
+// Да се напише функция, която намира произведението на две матрици.
+
+void multMatrices(int *matrix1, int *matrix2, int *mult, int width, int height) {
+ for (int i = width * height - 1; i >= 0; i--) {
+ for (int j = width; j > 0; j--) {
+ *mult += *(matrix1++) * *matrix2;
+ matrix2 += width;
+ }
+ matrix1 -= width;
+ matrix2 = (matrix2 - width * height) + 1;
+ if (i % width == 0) {
+ matrix1 += width;
+ matrix2 -= width;
+ }
+ mult++;
+ }
+}
+
+void ex5() {
+ const int MAX_SIZE = 256;
+
+ int width, height;
+ cin >> width >> height;
+
+ int matrix1[MAX_SIZE][MAX_SIZE];
+ int matrix2[MAX_SIZE][MAX_SIZE];
+ int mult[MAX_SIZE][MAX_SIZE];
+
+ cinMatrix(matrix1[0], width, height);
+ cinMatrix(matrix2[0], width, height);
+
+ multMatrices(matrix1[0], matrix2[0], mult[0], width, height);
+
+ coutMatrix(mult[0], width, height);
+}
+
+// Задача шеста*: Game of life
+// Нека имаме матрица N x N. Жива клетка наричаме клетка със стойност 1. Мъртва
+// клетка наричаме такава със стойност 0. Нека играем следната игра:
+// 1. Всяка жива клетка с по - малко от два живи съседа умира.
+// 2. Всяка жива клетка с два или три живи съседа оцелява.
+// 3. Всяка жива клетка с повече от 3 съседа умира.
+// 4. Всяка мъртва клетка с точно три съседа оживява.
+// Този процес наричаме една еволюция. Да се реализира програма, която
+// визуализира как (по избор):
+// 1. Ще изглежда нашият свят след n еволюции.
+// 2. Визуализира нашият свят като извежда всяка следваща еволюция. За
+// изчистване на екрана на терминала може да използвате system("cls");
+// Линк към оригиналната игра: https://playgameoflife.com/.
+
+void ex6() {
+
+}
+
+int main() {
+ ex5();
+}