Thursday, November 30, 2017

How to print elements of matrix in circular fashion or rounded snake method for both rectangular and square matrix.

How to print elements of matrix in circular fashion or rounded snake method for both rectangular and square matrix.

Did it in static way for easy understanding.

void round_print(int matrix[6][5], int l,int m) {
    int i,j,n;
    if(l>m)
        n=l;
    else
        n=m;                      //to find biggest of column and row

    for (int layer = 0; layer < n / 2; ++layer) {    //For printing in layers
        int first = layer;
        int last_c = m - 1 - layer;           //last column
        int last_r = l - 1 - layer;             //last row
        for(i = first,j=first; j < last_c; ++j) {     //Printing top row
            printf("%d ",matrix[i][j]);
        }
        for(i = first,j=last_c; i < last_r; ++i) {  //right column
            printf("%d ",matrix[i][j]);
        }
        for(i = last_r,j=last_c; j > first; --j) {   //bottom row
            printf("%d ",matrix[i][j]);
        }
        for(i = last_r,j=first; i > first; --i) {    //left column
            printf("%d ",matrix[i][j]);
        }
    }
    if(n%2)                                     // For odd number middle element will be missed
            printf("%d",matrix[n/2][n/2]);
}

int main(){
    int matrix[6][5] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25},{26,27,18,19,30}};
    for(int i=0;i<6;i++){
        for(int j=0;j<5;j++)
            printf("%3d ",matrix[i][j]);
        printf("\n");
    }
    round_print(matrix,6,5);
    return 0;
}

No comments:

Post a Comment