Advertisement
avr39ripe

d2arrKirillTask

Jan 23rd, 2021
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.74 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. template <typename T>
  4. void printArr(T* arr, int arrSize)
  5. {
  6.     for (int i{ 0 }; i < arrSize; ++i)
  7.     {
  8.         std::cout << arr[i] << '\t';
  9.     }
  10.     std::cout << '\n';
  11. }
  12.  
  13. template <typename T>
  14. void printArr(T** container, int ySize, int xSize)
  15. {
  16.     for (int y{ 0 }; y < ySize; ++y)
  17.     {
  18.         printArr(container[y], xSize);
  19.     }
  20.     std::cout << '\n';
  21. }
  22.  
  23. template <typename T>
  24. void fillArr(T** container, int ySize, int xSize)
  25. {
  26.     int cnt{ 1 };
  27.     for (int y{ 0 }; y < ySize; ++y)
  28.     {
  29.         for (int x{ 0 }; x < xSize; ++x)
  30.         {
  31.             container[y][x] = cnt++;
  32.         }
  33.     }
  34. }
  35.  
  36. template <typename T>
  37. void sliceBigArr(T** container, T* bigArr, int ySize, int xSize)
  38. {
  39.     for (int y{ 0 }; y < ySize; ++y)
  40.     {
  41.         container[y] = bigArr + xSize * y;
  42.     };
  43. }
  44.  
  45. template <typename T>
  46. T** createArr2DLinear(int ySize, int xSize)
  47. {
  48.     T** container{ new T * [ySize] };
  49.     T* bigArr{ new T[ySize * xSize] };
  50.     sliceBigArr(container, bigArr, ySize, xSize);
  51.     return container;
  52. }
  53.  
  54. template <typename T>
  55. void deleteArr2DLinear(T** container)
  56. {
  57.     delete[] *container;
  58.     delete[] container;
  59. }
  60.  
  61.  
  62.  
  63. int main()
  64. {
  65.     int ySize{ 3 };
  66.     int xSize{ 3 };
  67.     auto arr2D{ createArr2DLinear<int>(ySize,xSize) };
  68.  
  69.     fillArr(arr2D, xSize, ySize);
  70.     printArr(arr2D, ySize, xSize);
  71.  
  72.     deleteColumnArr2DLinear(arr2D, ySize, xSize, 2);
  73.     printArr(arr2D, ySize, xSize);
  74.  
  75.     auto newCol{ new int[ySize] {1,2,3} };
  76.     addColumnArr2DLinear(arr2D, ySize, xSize, 0, newCol);
  77.     printArr(arr2D, ySize, xSize);
  78.  
  79.     deleteRowArr2DLinear(arr2D, ySize, xSize, 2);
  80.     printArr(arr2D, ySize, xSize);
  81.  
  82.     auto newRow{ new int[xSize] {1,2,3} };
  83.     addRowArr2DLinear(arr2D, ySize, xSize, 2, newRow);
  84.     printArr(arr2D, ySize, xSize);
  85.  
  86.     deleteArr2DLinear(arr2D);
  87.  
  88.     delete[] newCol;
  89.     delete[] newRow;
  90.     return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement