Programming question on matrix


#1

write a proram to print the spiral path as shown in below
if the input is 3 then the output will be
1 2 3
8 9 4
7 6 5
if input is 4
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7


#2

#include
using namespace std;
int main()
{
int n;
cout<<“Enter n:”;
cin>>n;
int a[n][n],b=1,y=0,i,j,m=n*n;

while(y<n-2)
{

	i=y;
	for(j=y;(j<n-y)&&(b<=m);j++)
	a[i][j]=b++;

	j=n-y-1;
	for(i=y+1;(i<n-y)&&(b<=m);i++)
	a[i][j]=b++;

	i=n-y-1;
	for(j=n-y-2;(j>=y)&&(b<=m);j--)
	a[i][j]=b++;
	j=y;
	for(i=n-y-2;(i>y)&&(b<=m);i--)
	a[i][j] =b++;

	if(b-1==m)
	break;

	y++;
}

for(i=0;i<n;i++)
{
	for(j=0;j<n;j++)
	{
		cout<<a[i][j]<<"\t";
	}
	cout<<"\n";
}

}

output is:
output


#3

#include <stdio.h>
#define R 3
#define C 6

void spiralPrint(int m, int n, int a[R][C])
{
int i, k = 0, l = 0;

/*  k - starting row index
    m - ending row index
    l - starting column index
    n - ending column index
    i - iterator
*/

while (k < m && l < n)
{
    /* Print the first row from the remaining rows */
    for (i = l; i < n; ++i)
    {
        printf("%d ", a[k][i]);
    }
    k++;

    /* Print the last column from the remaining columns */
    for (i = k; i < m; ++i)
    {
        printf("%d ", a[i][n-1]);
    }
    n--;

    /* Print the last row from the remaining rows */
    if ( k < m)
    {
        for (i = n-1; i >= l; --i)
        {
            printf("%d ", a[m-1][i]);
        }
        m--;
    }

    /* Print the first column from the remaining columns */
    if (l < n)
    {
        for (i = m-1; i >= k; --i)
        {
            printf("%d ", a[i][l]);
        }
        l++;    
    }        
}

}

/* Driver program to test above functions */
int main()
{
int a[R][C] = { {1, 2, 3, 4, 5, 6},
{7, 8, 9, 10, 11, 12},
{13, 14, 15, 16, 17, 18}
};

spiralPrint(R, C, a);
return 0;