Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //https://vk.com/evgenykravchenko0
- ___ ___ ___
- / /\ ___ / /\ / /\
- / /:/_ /__/\ / /:/_ / /:/_
- / /:/ /\ \ \:\ / /:/ /\ / /:/ /\
- / /:/ /:/_ \ \:\ / /:/_/::\ / /:/ /:/_
- /__/:/ /:/ /\ ___ \__\:\ /__/:/__\/\:\ /__/:/ /:/ /\
- \ \:\/:/ /:/ /__/\ | |:| \ \:\ /~~/:/ \ \:\/:/ /:/
- \ \::/ /:/ \ \:\| |:| \ \:\ /:/ \ \::/ /:/
- \ \:\/:/ \ \:\__|:| \ \:\/:/ \ \:\/:/
- \ \::/ \__\::::/ \ \::/ \ \::/
- \__\/ ~~~~ \__\/ \__\/
- ___
- /__/\ ___ ___
- \ \:\ / /\ / /\
- \ \:\ / /:/ / /:/
- _____\__\:\ /__/::\ /__/::\
- /__/::::::::\ \__\/\:\__ \__\/\:\__
- \ \:\~~\~~\/ \ \:\/\ \ \:\/\
- \ \:\ ~~~ \__\::/ \__\::/
- \ \:\ /__/:/ /__/:/
- \ \:\ \__\/ \__\/
- \__\/
- #include <stdio.h>
- #include <stdlib.h>
- int **alloc_grid(int width, int height)
- {
- int **A = NULL;
- int i;
- int j;
- // проверка на корректность параметров
- if (width <= 0 || height <= 0)
- return NULL;
- // выделяем память под массив указателей на сроки
- A = (int **)malloc(height * sizeof(int *));
- if (A == NULL) // проверка на случай если не смогли выделить память
- return NULL;
- for (i = 0; i < height; i ++)
- {
- // выделяем память под каждую строку
- A[i] = (int *)malloc(width * sizeof(int));
- if (A[i] == NULL) // проверка на случай если не смогли выделить память
- return NULL;
- // заполняем строку нулями
- for (j = 0; j < width; j ++)
- A[i][j] = 0;
- }
- // возвращаем результат
- return A;
- }
- void free_grid(int **grid, int height)
- {
- int i;
- // проверка на корректность параметров
- if (height <= 0 || grid == NULL)
- return;
- for (i = 0; i < height; i ++)
- {
- if (grid[i] == NULL)
- continue;
- // освобождаем память строки
- free(grid[i]);
- grid[i] = NULL;
- }
- // освобождаем память указателей на строки
- free(grid);
- grid = NULL;
- } // освобождаем память матрицы
- int main(int argc, char *argv[])
- {
- int **M;
- int row;
- int col;
- int i;
- int j;
- row = col = 0;
- printf("Введите размер матрицы:\n Строк: ");
- scanf("%d", &row); // вводим количество строк
- printf("Столбцов: ");
- scanf("%d", &col); // вводим количество столбцов
- M = alloc_grid(col, row); // вызываем функцию выделение памяти под матрицу
- if (M != NULL) // если память удалось выделить
- { // выводим матрицу в консоль
- printf("Сформирована матрица %d на %d :\n", row, col);
- for (i = 0; i < row; i ++)
- {
- for (j = 0; j < col; j ++)
- printf("%d ", M[i][j]);
- printf("\n");
- }
- printf("\n");
- }
- free_grid(M, row); // вызываем функцию освобождения памяти
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement