diff options
Add Practicum solutions
6 files changed, 181 insertions, 0 deletions
| -rw-r--r-- | pract_SI/Pract. 08/Dynamic_arrays/DynamicArrays_Tasks.txt | 16 | ||||
| -rw-r--r-- | pract_SI/Pract. 08/Dynamic_arrays/task1.cpp | 39 | ||||
| -rw-r--r-- | pract_SI/Pract. 08/Dynamic_arrays/task2.cpp | 41 | ||||
| -rw-r--r-- | pract_SI/Pract. 08/Dynamic_arrays/task5.cpp | 37 | ||||
| -rw-r--r-- | pract_SI/Pract. 08/Dynamic_arrays/task6.cpp | 20 | ||||
| -rw-r--r-- | pract_SI/Pract. 08/Dynamic_arrays/task7.cpp | 28 |
diff --git a/pract_SI/Pract. 08/Dynamic_arrays/DynamicArrays_Tasks.txt b/pract_SI/Pract. 08/Dynamic_arrays/DynamicArrays_Tasks.txt new file mode 100644 index 0000000..8f83e5d --- /dev/null +++ b/pract_SI/Pract. 08/Dynamic_arrays/DynamicArrays_Tasks.txt @@ -0,0 +1,16 @@ +#Никола Светославов - Dynamic Arrays + +## Задачи + +1.Напишете програма, която въвежда от клавиатурата цяло число N и след това създава масив с размер N. +2.Напишете програма, която въвежда от клавиатурата цели числа N и M и след това създава матрица с размер NxM. +3.Напишете програма, която въвежда от клавиатурата цели числа N, M, Q и след това създава триизмерен масив с размер NxMxQ. +4.Напишете функция, която приема като параметър два едномерни сортирани целочислени масива с елементи от тип int и връща като резултат трети масив +(който съдържа всички елементи на двата масива и само тях), който също е сортиран. Предполага се, че входните масиви са сортирани преди да се извика написаната от вас функция. + +5.Напишете програма, която намира сумата на елементите над главния диагонал на квадратна матрица NxN, където N се въвежда от потребителя. +6.Напишете функция, която приема като параметър матрица NxM и връща транспонирата й матрица. +7.Напишете функция, която приема като параметър матрица NxM и матрица PxQ и връща тяхното матрично произведение. + *Note: NxM . PxQ = NxQ , тоест трябва m == p* +8.Напишете програма, която приема 2 матрици от конзолата(2 x 2D arrays). + Напишете функция, която сравнява 2-те матрици елемент по елемент и връща true, ако са еднакви(аналогично false ако не са).
\ No newline at end of file diff --git a/pract_SI/Pract. 08/Dynamic_arrays/task1.cpp b/pract_SI/Pract. 08/Dynamic_arrays/task1.cpp new file mode 100644 index 0000000..f02632e --- /dev/null +++ b/pract_SI/Pract. 08/Dynamic_arrays/task1.cpp @@ -0,0 +1,39 @@ +#include <iostream> +#define SEPARATOR " "; +using namespace std; + +int* createArray(size_t N) +{ + int* arr = new int[N]; + + for (size_t i = 0; i < N; i++) + arr[i] = NULL; + + return arr; +} + +void initialize(int *arr,size_t size) +{ + for (size_t i = 0; i < size; i++) + cin >> arr[i]; +} + +void print(int *arr, size_t size) +{ + for (size_t i = 0; i < size; i++) + cout << arr[i] << SEPARATOR; +} + +void Free(int *arr) +{ + delete[] arr; +} + +int main() +{ + int N; cin >> N; + int *arr = createArray(N); + initialize(arr, N); + print(arr, N); + free(arr); +}
\ No newline at end of file diff --git a/pract_SI/Pract. 08/Dynamic_arrays/task2.cpp b/pract_SI/Pract. 08/Dynamic_arrays/task2.cpp new file mode 100644 index 0000000..0a9ddb0 --- /dev/null +++ b/pract_SI/Pract. 08/Dynamic_arrays/task2.cpp @@ -0,0 +1,41 @@ +#include <iostream> +using namespace std; + +int** createMatrix(size_t rows, size_t columns) +{ + int **matrix = new int*[rows]; //Step 1 + + for (size_t i = 0; i < rows; i++) //step2 + matrix[i] = new int[columns]; + + for (size_t i = 0; i < rows; i++) + for (size_t y = 0; y < columns; y++) + matrix[i][y] = NULL; //default initialization + + return matrix; +} + +void initialize(int **matrix, size_t rows, size_t columns) +{ + for (size_t i = 0; i < rows; i++) + for (size_t y = 0; y < columns; y++) + cin >> matrix[i][y]; +} +void print(int **matrix, size_t rows, size_t columns) +{ + for (size_t i = 0; i < rows; i++) + { + for (size_t y = 0; y < columns; y++) + { + cout << matrix[i][y] << " "; + } + cout << endl; + } +} +void free(int **matrix, size_t rows) +{ + for (size_t i = 0; i < rows; i++) + delete[] matrix[i]; + + delete[] matrix; +}
\ No newline at end of file diff --git a/pract_SI/Pract. 08/Dynamic_arrays/task5.cpp b/pract_SI/Pract. 08/Dynamic_arrays/task5.cpp new file mode 100644 index 0000000..721ca93 --- /dev/null +++ b/pract_SI/Pract. 08/Dynamic_arrays/task5.cpp @@ -0,0 +1,37 @@ +#include <iostream> +using namespace std; + +int** createMatrix(size_t size) +{ + int **matrix = new int*[size]; + + for (size_t i = 0; i < size; i++) + matrix[i] = new int[size]; + + for (size_t i = 0; i < size; i++) + for (size_t y = 0; y < size; y++) + cin >> matrix[i][y]; + + return matrix; +} + +int sumAboveMainDiagonal(int **matrix, size_t size) +{ + int sum = 0; + for (size_t i = 0; i < size - 1; i++) + for (size_t j = i + 1; j < size; j++) + sum += matrix[i][j]; + + return sum; +} + +/* +int sumOfMainDiagonal(int **matrix, size_t size) +{ + int sum = 0; + for (size_t i = 0; i < size; i++) + sum += matrix[i][i]; + + return sum; +} +*/
\ No newline at end of file diff --git a/pract_SI/Pract. 08/Dynamic_arrays/task6.cpp b/pract_SI/Pract. 08/Dynamic_arrays/task6.cpp new file mode 100644 index 0000000..ecf95d9 --- /dev/null +++ b/pract_SI/Pract. 08/Dynamic_arrays/task6.cpp @@ -0,0 +1,20 @@ +#include <iostream> + +int** transposition(int **matrix, size_t _rows, size_t _columns) +{ + int rows = _columns; + int columns = _rows; + + int** result = new int*[rows]; //result = transposition of matrix (columnsxrows) + + for (size_t i = 0; i < rows; i++) + result[i] = new int[columns]; + + for (size_t i = 0; i < rows; i++) + { + for (size_t y = 0; y < columns; y++) + result[i][y] = matrix[y][i]; + } + + return result; +}
\ No newline at end of file diff --git a/pract_SI/Pract. 08/Dynamic_arrays/task7.cpp b/pract_SI/Pract. 08/Dynamic_arrays/task7.cpp new file mode 100644 index 0000000..3e430f5 --- /dev/null +++ b/pract_SI/Pract. 08/Dynamic_arrays/task7.cpp @@ -0,0 +1,28 @@ +#include <iostream> +using namespace std; + +int** createMatrix(size_t rows, size_t columns) +{ + int **matrix = new int*[rows]; //Step 1 + + for (size_t i = 0; i < rows; i++) //step2 + matrix[i] = new int[columns]; + + for (size_t i = 0; i < rows; i++) + for (size_t y = 0; y < columns; y++) + matrix[i][y] = NULL; //default initialization + + return matrix; +} + +int** multiplyMatrix(int **A,size_t a_rows,size_t a_col, int **B,size_t b_rows,size_t b_col) //A && B are matrixes +{ + int** multiply = createMatrix(a_rows, b_col); //a_rows x b_col -> all Zero's + + for (size_t i = 0; i < a_rows; i++) + for (size_t y = 0; y < b_col; y++) + for (size_t k = 0; k < a_rows; k++) + multiply[i][y] += A[i][k] * B[k][i]; + + return multiply; +}
\ No newline at end of file |
