Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <random>
- #include <iomanip>
- 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<int> 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;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement