Advertisement
EvgeniiKraaaaaaaav

5.2

Dec 26th, 2018
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.24 KB | None | 0 0
  1. //https://vk.com/evgenykravchenko0
  2.  
  3.                 ___                                        ___                   ___    
  4.                /  /\                  ___                 /  /\                 /  /\    
  5.               /  /:/_                /__/\               /  /:/_               /  /:/_  
  6.              /  /:/ /\               \  \:\             /  /:/ /\             /  /:/ /\  
  7.             /  /:/ /:/_               \  \:\           /  /:/_/::\           /  /:/ /:/_
  8.            /__/:/ /:/ /\          ___  \__\:\         /__/:/__\/\:\         /__/:/ /:/ /\
  9.            \  \:\/:/ /:/         /__/\ |  |:|         \  \:\ /~~/:/         \  \:\/:/ /:/
  10.             \  \::/ /:/          \  \:\|  |:|          \  \:\  /:/           \  \::/ /:/
  11.              \  \:\/:/            \  \:\__|:|           \  \:\/:/             \  \:\/:/  
  12.               \  \::/              \__\::::/             \  \::/               \  \::/  
  13.                \__\/                   ~~~~               \__\/                 \__\/    
  14.                             ___                                            
  15.                            /__/\                ___                 ___    
  16.                            \  \:\              /  /\               /  /\    
  17.                             \  \:\            /  /:/              /  /:/    
  18.                         _____\__\:\          /__/::\             /__/::\    
  19.                        /__/::::::::\         \__\/\:\__          \__\/\:\__
  20.                        \  \:\~~\~~\/            \  \:\/\            \  \:\/\
  21.                         \  \:\  ~~~              \__\::/             \__\::/
  22.                          \  \:\                  /__/:/              /__/:/
  23.                           \  \:\                 \__\/               \__\/  
  24.                            \__\/                      
  25. #include <stdio.h>
  26. #include <stdlib.h>
  27.  
  28.  
  29. int **alloc_grid(int width, int height)
  30. {
  31.   int **A = NULL;
  32.   int i;
  33.   int j;
  34.    
  35.     // проверка на корректность параметров
  36.   if (width <= 0 || height <= 0)
  37.     return NULL;
  38.        
  39.     // выделяем память под массив указателей на сроки
  40.   A = (int **)malloc(height * sizeof(int *));
  41.   if (A == NULL)    // проверка на случай если не смогли выделить память
  42.     return NULL;
  43.    
  44.   for (i = 0; i < height; i ++)
  45.   {
  46.         // выделяем память под каждую строку
  47.     A[i] = (int *)malloc(width * sizeof(int));
  48.     if (A[i] == NULL)   // проверка на случай если не смогли выделить память
  49.       return NULL;
  50.        
  51.         // заполняем строку нулями
  52.     for (j = 0; j < width; j ++)
  53.       A[i][j] = 0;         
  54.   }
  55.    
  56.     // возвращаем результат
  57.   return A;
  58. }
  59.  
  60. void free_grid(int **grid, int height)
  61. {
  62.   int i;
  63.    
  64.     // проверка на корректность параметров
  65.   if (height <= 0 || grid == NULL)
  66.     return;
  67.        
  68.   for (i = 0; i < height; i ++)
  69.   {
  70.     if (grid[i] == NULL)
  71.       continue;
  72.        
  73.         // освобождаем память строки
  74.     free(grid[i]);
  75.     grid[i] = NULL;
  76.   }
  77.    
  78.     // освобождаем память указателей на строки
  79.   free(grid);
  80.   grid = NULL;
  81. }       // освобождаем память матрицы
  82.  
  83. int main(int argc, char *argv[])
  84. {
  85.  
  86.   int **M;
  87.   int row;
  88.   int col;
  89.   int i;
  90.   int j;
  91.  
  92.   row = col = 0;
  93.    
  94.   printf("Введите размер матрицы:\n Строк: ");
  95.   scanf("%d", &row);    // вводим количество строк
  96.   printf("Столбцов: ");
  97.   scanf("%d", &col);    // вводим количество столбцов
  98.    
  99.   M = alloc_grid(col, row); // вызываем функцию выделение памяти под матрицу
  100.   if (M != NULL)    // если память удалось выделить
  101.   {  // выводим матрицу в консоль
  102.     printf("Сформирована матрица %d на %d :\n", row, col);
  103.     for (i = 0; i < row; i ++)
  104.     {
  105.       for (j = 0; j < col; j ++)
  106.         printf("%d ", M[i][j]);
  107.       printf("\n");
  108.     }
  109.     printf("\n");
  110.   }
  111.    
  112.   free_grid(M, row);    // вызываем функцию освобождения памяти
  113.    
  114.   return 0;
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement