Hello,
Following code prints the 2-dimensional array spirally. Can anybody have better version or other ideas? Especially in highlighted areas.
Currently botton right element prints twice....
Code:
# include<stdio.h>
void printElement(int i,int j,int maxCol,int maxRow);
int a[4][4] = {
{1,2,3,11},
{4,5,6,12},
{7,8,9,13},
{14,15,16,17},
};
void main()
{
int maxCol = sizeof(a[0])/sizeof(a[0][0])-1;
int maxRow = sizeof(a)/sizeof(a[0])-1;
int i = 0;
int j = 0;
while ( (i < maxRow) && (j < maxCol) )
{
printElement(i,j,maxCol,maxRow);
i++;j++;
maxCol--;
maxRow--;
}
if ( (i == maxRow) && (j == maxCol) )
printf("%d\t",a[j][i]);
}
void printElement(int i,int j,int maxCol,int maxRow)
{
printf("%d\t",a[i][j]);
if ( j < maxCol )
{
j++;
printElement(i,j,maxCol,maxRow);
printf("%d\t",a[j][i]);
return;
}
if ( i < maxRow )
{
i++;
// if ( i == maxRow )
// return;
printElement(i,j,maxCol,maxRow);
printf("%d\t",a[j][i]);
return;
}
else
return;
}