Advertisement
avr39-ripe

BBR192_2dDynArrLecture

Apr 13th, 2020
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.16 KB | None | 0 0
  1. //#include <iostream>
  2. //
  3. //int main()
  4. //{
  5. //    int sizey{ 10 };
  6. //    int sizex{ 10 };
  7. //
  8. //    int** arr2d = new int* [sizey];
  9. //
  10. //    for (int i = 0; i < sizey; i++)
  11. //    {
  12. //        arr2d[i] = new int[sizex];
  13. //    }
  14. //
  15. //
  16. //
  17. //    for (int i = 0; i < sizey; i++)
  18. //    {
  19. //        for (int j = 0; j < sizex; j++)
  20. //        {
  21. //            arr2d[i][j] = rand() % 10;
  22. //        }
  23. //    }
  24. //
  25. //    for (int i = 0; i < sizey; i++)
  26. //    {
  27. //        for (int j = 0; j < sizex; j++)
  28. //        {
  29. //            std::cout << arr2d[i][j] << ' ';
  30. //        }
  31. //        std::cout << '\n';
  32. //    }
  33. //
  34. //    int** arr2dcopy = new int* [sizey - 1];
  35. //    for (int i = 0; i < sizey - 1; i++)
  36. //    {
  37. //        arr2dcopy[i] = arr2d[i];
  38. //    }
  39. //    delete[]arr2d[sizey - 1];
  40. //
  41. //}
  42.  
  43.  
  44. #include <iostream>
  45.  
  46.  
  47. void printArr2d(int arr2d[][3], int ySize, int xSize)
  48. {
  49.     for (int y{ 0 }; y < ySize; ++y)
  50.     {
  51.         for (int x{ 0 }; x < xSize; ++x)
  52.         {
  53.             std::cout << arr2d[y][x] << '\t';
  54.         }
  55.         std::cout << '\n';
  56.     }
  57. }
  58.  
  59. void printArr(int* arr, int xSize)
  60. {
  61.     for (int x{ 0 }; x < xSize; ++x)
  62.     {
  63.         std::cout << arr[x] << '\t';
  64.     }
  65.     std::cout << '\n';
  66. }
  67.  
  68. //y = 1, x = 1 => 5 (xSize = 3)
  69. int& lineTo2dArr(int* arr, int yIdx, int xIdx, int xSize)
  70. {
  71.     return *(arr + yIdx * xSize + xIdx);
  72. }
  73.  
  74.  
  75. template <typename T>
  76. T** create2dArr(int ySize, int xSize)
  77. {
  78.     T** arr2dDyn{ new T* [ySize]};
  79.  
  80.     for (int y{ 0 }; y < ySize; ++y)
  81.     {
  82.         arr2dDyn[y] = new T[xSize];
  83.     }
  84.     return arr2dDyn;
  85. }
  86.  
  87. template <typename T>
  88. void delete2dArr(T** arr2d, int ySize)
  89. {
  90.     for (int y{ 0 }; y < ySize; ++y)
  91.     {
  92.         delete[] arr2d[y];
  93.     }
  94.  
  95.     delete[] arr2d;
  96. }
  97.  
  98. template <typename T>
  99. void fill2dArr(T** arr2d, int ySize, int xSize)
  100. {
  101.     for (int y{ 0 }; y < ySize; ++y)
  102.     {
  103.         for (int x{ 0 }; x < xSize; ++x)
  104.         {
  105.             arr2d[y][x] = rand() % 10;
  106.         }
  107.     }
  108. }
  109.  
  110. template <typename T>
  111. void print2dArr(T** arr2d, int ySize, int xSize)
  112. {
  113.     for (int y{ 0 }; y < ySize; ++y)
  114.     {
  115.         for (int x{ 0 }; x < xSize; ++x)
  116.         {
  117.             std::cout << arr2d[y][x] << ' ';
  118.         }
  119.         std::cout << '\n';
  120.     }
  121. }
  122.  
  123. template <typename T>
  124. void copy(T* srcB, T* srcE, T* destB, T* destE)
  125. {
  126.     while (srcB != srcE and destB != destE)
  127.     {
  128.         *destB++ = *srcB++;
  129.     }
  130. }
  131.  
  132. //template <typename T>
  133. //void deleteLastLine2dArr(T**& arr2d, int& ySize)
  134. //{
  135. //  delete[] arr2d[ySize - 1];
  136. //  T** tmp = new T* [--ySize];
  137. //  //copy(arr2d, arr2d + ySize, tmp, tmp + ySize);
  138. //  for (int y{ 0 }; y < ySize; ++y)
  139. //  {
  140. //      tmp[y] = arr2d[y];
  141. //  }
  142. //  delete[] arr2d;
  143. //  arr2d = tmp;
  144. //}
  145.  
  146. template <typename T>
  147. void deleteLine2dArr(T**& arr2d, int& ySize, int lineIdx)
  148. {
  149.     delete[] arr2d[lineIdx];
  150.     T** tmp = new T * [--ySize];
  151.     for (int y{ 0 }; y < ySize; ++y)
  152.     {
  153.         y < lineIdx ? tmp[y] = arr2d[y] : tmp[y] = arr2d[y+1];
  154.     }
  155.     delete[] arr2d;
  156.     arr2d = tmp;
  157. }
  158.  
  159. template <typename T>
  160. void deleteLastLine2dArr(T**& arr2d, int& ySize)
  161. {
  162.     deleteLine2dArr(arr2d, ySize, ySize - 1);
  163. }
  164.  
  165. template <typename T>
  166. void deleteFirstLine2dArr(T**& arr2d, int& ySize)
  167. {
  168.     deleteLine2dArr(arr2d, ySize, 0);
  169. }
  170.  
  171. int main()
  172. {
  173.     int ySize{ 10 };
  174.     int xSize{ 10 };
  175.  
  176.     int** arr2d = create2dArr<int>(ySize, xSize);
  177.     fill2dArr(arr2d, ySize, xSize);
  178.     print2dArr(arr2d, ySize, xSize);
  179.     std::cout << '\n';
  180.     deleteLine2dArr(arr2d, ySize,5);
  181.     std::cout << "New ySize is: " << ySize << "\n\n";
  182.     print2dArr(arr2d, ySize, xSize);
  183.     std::cout << '\n';
  184.     deleteLastLine2dArr(arr2d, ySize);
  185.     std::cout << "New ySize is: " << ySize << "\n\n";
  186.     print2dArr(arr2d, ySize, xSize);
  187.     std::cout << '\n';
  188.     deleteFirstLine2dArr(arr2d, ySize);
  189.     std::cout << "New ySize is: " << ySize << "\n\n";
  190.     print2dArr(arr2d, ySize, xSize);
  191.     std::cout << '\n';
  192.     delete2dArr(arr2d, ySize);
  193.  
  194.     return 0;
  195.  
  196.     /*int ySize{ 10 };
  197.     int xSize{ 8 };
  198.  
  199.     int** arr2d { new int* [ySize] };
  200.  
  201.     for (int y{ 0 }; y < ySize; ++y)
  202.     {
  203.         arr2d[y] = new int[xSize];
  204.     }
  205.  
  206.     for (int y{ 0 }; y < ySize; ++y)
  207.     {
  208.         for (int x{ 0 }; x < xSize; ++x)
  209.         {
  210.             arr2d[y][x] = rand() % 10;
  211.         }
  212.     }
  213.  
  214.     for (int y{ 0 }; y < ySize; ++y)
  215.     {
  216.         for (int x{ 0 }; x < xSize; ++x)
  217.         {
  218.             std::cout << arr2d[y][x] << ' ';
  219.         }
  220.         std::cout << '\n';
  221.     }
  222.     std::cout << '\n';
  223.  
  224.     delete[] arr2d[ySize - 1];
  225.     int** tmp = new int * [--ySize];
  226.     for (int y{ 0 }; y < ySize; ++y)
  227.     {
  228.         tmp[y] = arr2d[y];
  229.     }
  230.     delete[] arr2d;
  231.     arr2d = tmp;
  232.  
  233.     std::cout << "New ySize is: " << ySize << "\n\n";
  234.  
  235.     for (int y{ 0 }; y < ySize; ++y)
  236.     {
  237.         for (int x{ 0 }; x < xSize; ++x)
  238.         {
  239.             std::cout << arr2d[y][x] << ' ';
  240.         }
  241.         std::cout << '\n';
  242.     }
  243.     std::cout << '\n';
  244.  
  245.     for (int y{ 0 }; y < ySize; ++y)
  246.     {
  247.         delete[] arr2d[y];
  248.     }
  249.     delete[] arr2d;*/
  250.  
  251.  
  252.     /*for (int y{ 0 }; y < ySize; ++y)
  253.     {
  254.         arr2dDyn[y] = new int[xSize];
  255.     }*/
  256.  
  257.     //int arr2d[ySize][xSize]{ {12,23,34},{64,57,86} };
  258.  
  259.     //printArr((int*)arr2d, ySize * xSize);
  260.  
  261.     //return 0;
  262.  
  263.     //std::cout << (arr2dDyn[0] == nullptr) << '\n';
  264.     //std::cout << (arr2dDyn[1] == nullptr) << '\n';
  265.     //arr2dDyn[0] = new int[xSize] {1,2,3};
  266.     //arr2dDyn[1] = new int[xSize] {4,5,6};
  267.  
  268.     //int* bigArr{ new int[ySize * xSize]{1,2,3,4,5,6} };
  269.  
  270.     //for (int y{ 0 }; y < ySize; ++y)
  271.     //{
  272.     //  for (int x{ 0 }; x < xSize; ++x)
  273.     //  {
  274.     //      arr2[y][x] = rand() % 10;
  275.     //  }
  276.     //  std::cout << '\n';
  277.     //}
  278.  
  279.     //for (int y{ 0 }; y < ySize; ++y)
  280.     //{
  281.     //  for (int x{ 0 }; x < xSize; ++x)
  282.     //  {
  283.     //      std::cout << "Enter arr[" << y << "][" << x << "]\n";
  284.     //      std::cin >> lineTo2dArr(bigArr, y, x, xSize);
  285.     //  }
  286.     //  std::cout << '\n';
  287.     //}
  288.  
  289.     //for (int y{ 0 }; y < ySize; ++y)
  290.     //{
  291.     //  for (int x{ 0 }; x < xSize; ++x)
  292.     //  {
  293.     //      std::cout << lineTo2dArr(bigArr, y, x, xSize) << '\t';
  294.     //  }
  295.     //  std::cout << '\n';
  296.     //}
  297.     //for (int y{ 0 }; y < ySize; ++y)
  298.  
  299.     //{
  300.     //  arr2dDyn[y] = bigArr + y * xSize;
  301.     //}
  302.     //printArr2dDyn(arr2dDyn, ySize, xSize);
  303.     //delete[] arr2dDyn[0];
  304.     //delete[] arr2dDyn[1];
  305.  
  306.     //delete[] bigArr;
  307.     //for (int y{ 0 }; y < ySize; ++y)
  308.     //{
  309.     //  delete[] arr2dDyn[y];
  310.     //}
  311.  
  312.     //delete[] arr2dDyn;
  313.  
  314.     ////int arr[xSize]{};
  315.     //int* arrPtr{ new int[xSize] {1,2,3} };
  316.     //
  317.     //arrPtr[0] = 1;
  318.     //arrPtr[1] = 2;
  319.     //arrPtr[2] = 3;
  320.  
  321.     //*(arrPtr + 0) = 1;
  322.     //*(arrPtr + 1) = 2;
  323.     //*(arrPtr + 1) = 3;
  324.  
  325.     //delete[] arrPtr;
  326.     //printArr2d(arr2d, ySize, xSize);
  327.    
  328. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement