/*Unwrapping a Spiral */
#include<stdio.h>
#include<stdlib.h>
int nrow,ncol,**mtrx;
void spiral(int no );
int main()
{
int i,j,no;
printf("\nEnter No of Rows & Cols");
scanf("%d \n %d",&nrow,&ncol);
mtrx=(int **)malloc(ncol*sizeof(int *));
for(i=0;i<ncol;i++)
{
mtrx[i]=(int *)malloc(nrow*sizeof(int));
}
printf("\nEnter Elements of Matrix");
for(i=0;i<nrow;i++)
{
for(j=0;j<ncol;j++)
{
scanf("\n%d",&mtrx[i][j]);
printf("\n%d",mtrx[i][j]);
printf("\t%d \t %d\n",i,j);
}
}
/* for(i=0;i<nrow;i++)
{
for(j=0;j<ncol;j++)
{
printf("\n%d",mtrx[i][j]);
printf("\t%d \t %d",i,j);
}
}*/
no=nrow*ncol;
spiral(no);
return 0;
}
void spiral(int no)
{
int nele=0,cntr=0,i;
while(nele<=no)
{
for(i=cntr;i<(ncol-cntr);i++)
{
printf("\n%d",mtrx[cntr][i]);
nele++;
}
if(nele==no)
{
exit(0);
}
for(i=cntr+1;i<(nrow-cntr);i++)
{
printf("\n%d",mtrx[i][ncol-1-cntr]);
nele++;
}
if(nele==no)
{
exit(0);
}
for(i=(ncol-2-cntr);i>cntr;i--)
{
printf("\n%d",mtrx[nrow-1-cntr][i]);
nele++;
}
if(nele==no)
{
exit(0);
}
for(i=(nrow-1-cntr);i>cntr;i--)
{
printf("\n%d",mtrx[i][cntr]);
nele++;
}
cntr++;
}
}