diff --git a/Spiral_Array/Spiral_Array.cpp b/Spiral_Array/Spiral_Array.cpp new file mode 100644 index 0000000000..787c864e80 --- /dev/null +++ b/Spiral_Array/Spiral_Array.cpp @@ -0,0 +1,83 @@ +// SPIRAL PRINTING 2-D matrix + +#include +using namespace std; + +int main() +{ + int m, n; + int left, right, top, bottom; + int i, j, count, dir; + int arr[100][100]; + + cin >> m >> n; // Matrix of m*n + + left = 0; + right = n-1; + top = 0; + bottom = m-1; + + count = m * n; // no. of elements + dir = 1; + + for (i = 0; i < m; i++) // Taking Inputs + { + for (j = 0; j < n; j++) + cin >> arr[i][j]; + } + + while (left <= right && top <= bottom && count > 0) + { + if (dir == 1) // left to right + { + for (i = left; i <= right; i++) + { + cout << arr[top][i]; // Printing the topmost untraversed row + count--; + } + dir++; + top++; + } + if (dir == 2) //top to bottom + { + for (i = top; i <= bottom; i++) + { + cout << arr[i][right]; // Printing the rightmost untraversed column + count--; + } + dir++; + right--; + } + if (dir == 3) //left to right + { + for (i = right; i >= left; i--) + { + cout << arr[bottom][i]; // Printing the bottommost untraversed column + count--; + } + dir++; + bottom--; + } + if (dir == 4) // bottom to top + { + for (i = bottom; i >= top; i--) + { + cout << arr[i][left]; // Printing the leftmost untraversed column + count--; + } + dir = 1; + left++; + } + } + return 0; +} + +/* SAMPLE I/O +Input +3 3 +1 2 3 +4 5 6 +7 8 9 +Output +1 2 3 6 9 8 7 4 5 +*/