void PrintMatrixClockwise(int** arr, int columns, int rows) { if (arr == nullptr || columns <= 0 || rows <= 0) return; int start = 0; while (columns > start * 2 && rows > start * 2) { PrintMatrixInCircle(arr,columns,rows,start); ++start; } return; } void PrintMatrixInCircle(int** arr, int columns, int rows, int start) { int endy = rows - start - 1; int endx = columns - start - 1; for (int i = start; i <= endx; ++i) { int number = arr[start][i]; std::cout << number << std::endl; } if (start < endy) { for (int i = start; i <= endy; ++i) { int number = arr[i][endx]; std::cout << number << std::endl; } } if (start < endx && start < endy) { for (int i = endx-1; i >= start; --i) { int number = arr[endy][i]; std::cout << number << std::endl; } } if (start < endx && start < endy - 1) { for (int i = endy-1; i >= start+1; --i) { int number = arr[i][start]; std::cout << number << std::endl; } } }