Spiral Array

Given a two dimensional array, print its elements in spiral format.

// Assuming HSIZE and VSIZE are the horizontal and vertical sizes of the array
void PrintArrayInSpiralFormat(int (*arr)[HSIZE])
{
    int v_index = 0;
    int h_index = 0;
    int v_size = VSIZE;
    int h_size = HSIZE;
 
    while (v_size > 1 && h_size > 1)
    {
        while (h_index < h_size)
            cout << arr[v_index][h_index++] << " ";
        h_index--;
        v_index++;
    
        while (v_index < v_size)
            cout << arr[v_index++][h_index] << " ";
        v_index--;
        h_index--;
 
        while (h_index >= HSIZE - h_size)
            cout << arr[v_index][h_index--] << " ";
        h_index++;
        v_index--;
        v_size--;
 
        while (v_index >= VSIZE - v_size)
            cout << arr[v_index--][h_index] << " ";
        v_index++;
        h_index++;
        h_size--;
    }
}
Comments