#include #include #include using namespace std; int** create(size_t, size_t); void fill(int**, size_t, size_t); int randomize(int = 0, int = 99); void print(int**, size_t, size_t, streamsize = 3); void destroy(int**, size_t); int main() { system("chcp 1251 > nul"); cout << "Введите размерность матрицы: "; size_t r, c; cin >> r >> c; int** matrix = nullptr; if (matrix = create(r, c)) { fill(matrix, r, c); print(matrix, r, c); destroy(matrix, r); matrix = nullptr; } else cout << "\a Недостаточно памяти!\n"; cin.sync(); cin.get(); } int** create(size_t rows, size_t cols) { int** ptr = nullptr; if (ptr = new (nothrow) int*[rows]) { for (size_t row = 0; row < rows; ++row) { if (ptr[row] = new (nothrow) int[cols]); else { for (size_t r = 0; r < row; ++r) { delete[] ptr[r]; } delete[] ptr; ptr = nullptr; break; } } } return ptr; } void fill(int** matrix, size_t rows, size_t cols) { for (size_t row = 0; row < rows; ++row) { for (size_t col = 0; col < cols; ++col) { matrix[row][col] = randomize(); } } } int randomize(int left, int right) { if (left > right) swap(left, right); uniform_int_distribution rand(left, right); random_device rnd; return rand(rnd); } void print(int** matrix, size_t rows, size_t cols, streamsize width) { for (size_t row = 0; row < rows; ++row) { for (size_t col = 0; col < cols; ++col) { cout << setw(width) << matrix[row][col]; } cout << '\n'; } } void destroy(int** matrix, size_t rows) { if (matrix) { for (size_t row = 0; row < rows; ++row) { if (matrix[row]) { delete[] matrix[row]; } } delete[] matrix; } }