Code:
#include <stdio.h>
#include <stdlib.h>
void CompleteBidimArray(int rows, int cols, int mat[rows][cols])
{
int i, j;
for(i=0; i<rows; i++)
{
for(j=0; j<cols; j++)
{
printf("\n[%d][%d]: ", i, j);
scanf("%d", &mat[i][j]);
}
}
}
void PrintOriginalBidimArray(int rows, int cols, int mat[rows][cols])
{
int i, j;
for (i=0; i<rows; i++)
{
for(j=0; j<cols; j++)
{
printf("%4d", mat[i][j]);
}
printf("\n");
}
}
void Right (int rows, int cols, int InitialRow, int mat[rows][cols])
{
int InitialCol=InitialRow;
int j;
printf("\n\nRIGHT\n");
for(j=InitialCol; j<(cols-InitialCol); j++)
{
printf("%4d", mat[InitialRow][j]);
mat[InitialRow][j]=-1;
}
}
void Down(int rows, int cols, int InitialCol, int mat[rows][cols])
{
int InitialRow=cols-InitialCol;
int i;
printf("\n\nDOWN\n");
for(i=InitialRow; i<(rows-InitialRow); i++)
{
printf("%4d", mat[i][InitialCol]);
mat[i][InitialCol]=-1;
}
}
void Left (int rows, int cols, int FinalCol, int mat[rows][cols])
{
int FinalRow=FinalCol;
int j;
printf("\n\nLEFT\n");
for(j=FinalCol; j>(cols-FinalCol-2); j--)
{
printf("%4d", mat[FinalRow][j]);
mat[FinalRow][j]=-1;
}
}
void Up (int rows, int cols, int FinalRow, int mat[rows][cols])
{
int FinalCol=cols-FinalRow-1;
int i;
printf("\n\nUP\n");
for(i=FinalRow-1; i>(rows-FinalRow-1); i--)
{
printf("%4d", mat[i][FinalCol]);
mat[i][FinalCol]=-1;
}
}
void PrintModifiedBidimArray(int rows, int cols, int mat[rows][cols])
{
int i, j;
printf("\n");
for (i=0; i<rows; i++)
{
for(j=0; j<cols; j++)
{
printf("%4d", mat[i][j]);
}
printf("\n");
}
}
int main()
{
int rows, cols, i, j;
printf("\nRows and Columns: ");
scanf("%d", &rows);
cols=rows;
j=cols;
int a=0;
int mat[rows][cols];
CompleteBidimArray(rows, cols, mat);
PrintOriginalBidimArray(rows, cols, mat);
Right(rows, cols, a, mat); //first step
for (i=1; i<rows; i++)
{
while((mat[i-1][j])!=-1)
{
Down(rows, cols, cols-1, mat);
Left(rows, cols, cols-1, mat);
Up(rows, cols, cols-1, mat);
}
a++;
if((mat[i-1][j])==-1)
{
Right(rows, cols, a, mat);
}
}
if(rows%2==1)
{
printf("\n\n %d", mat[rows/2][cols/2]);
}
PrintModifiedBidimArray(rows, cols, mat);
return 0;
}
Thanks!