diff options
Added todays practice
1 files changed, 156 insertions, 0 deletions
| -rw-r--r-- | Year 1/Programming introduction/Practice-13.12.2021.cpp | 156 |
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(); +} |
