/ * Виділення динамічної пам'яті під двовимірний динамічний масив * /
int ** form_matr (int n, int m)
{
int ** matr = new int * [n];/ / виділення пам'яті по масив покажчиків
for (int i = 0; i <n; i + +)
/ / Виділення пам'яті 100 * sizeof (int) байт для масиву значень
matr [i] = new int [m];
Return matr;/ / повертаємо вказівник на масив покажчиків
*matr[0] | *matr[1] | *matr[2] | ….. | *matr[n] |
Рисунок – Виділення пам'яті під двовимірний масив
Змінювати значення покажчика на динамічний масив треба акуратно, тому що цей покажчик потім використовується при звільненні пам'яті за допомогою операції delete.
/ * Звільняє пам'ять, виділену під масив, якщо а адресує його початок */
delete [] a;
Видалення з динамічної пам'яті двовимірного масиву здійснюється в порядку зворотному його створення, тобто спочатку звільняється пам'ять, виділена під одномірні масиви з даними, а потім пам'ять, виділена під одновимірний масив покажчиків.
int find (int ** matr, int m, int I)
{
for (int i = 0; i <m; i + +)
if (matr [I] [i] <0) return 1;
return 0;
}
При видаленні з динамічної матриці рядків або стовпців створюється нова матриця потрібного розміру, в яку переписуються дані зі старої матриці. Потім стара матриця видаляється.
int ** del (int ** matr, int & n, int m)
{/ / Видалення парних рядків
int k = 0, t = 0;
for (int i = 0; i <n; i + +)
if (i% 2! = 0) k + +;/ / кількість непарних рядків
/ / Виділяємо пам'ять під нову матрицю
int ** matr2 = form_matr (k, m);
for (i = 0; i <n; i + +)
if (i% 2! = 0)
{
/ / Якщо рядок непарна, то переписуємо її в нову матрицю
for (int j = 0; j <m; j + +)
matr2 [t] [j] = matr [i] [j];
t + +;
}
n = t;/ / змінюємо кількість рядків
/ / Повертаємо покажчик на нову матрицю як результат функції
return matr2;
}
Постановка завдання
Сформувати динамічний одновимірний масив, заповнити його випадковими числами і вивести на друк.
Виконати вказану у варіанті завдання і вивести отриманий масив на друк.
Сформувати динамічний двовимірний масив, заповнити його випадковими числами і вивести на друк.
Виконати вказану у варіанті завдання і вивести отриманий масив на друк.