removal of 'zero' rows and columns in a matrix in java
#include <stdio.h> #include <stdlib.h> void main() { int mat[10][10],mat2[10][10]; int sum[10],flag_r,flag_c; int i,i2,j,j2,k; int r,c; scanf("%d %d",&r,&c); //Reading matrix for(i=0;i<r;i++) { for(j=0;j<c;j++) { scanf("%d",&mat[i][j]); } } //For rows for(i=0;i<10;i++) //Clearing sum sum[i]=0; for(i=0;i<r;i++) //Adding rows { for(j=0;j<c;j++) { if(mat[i][j]!=0) sum[i]=2; } } flag_r=0; for(i=0,i2=0;i<r;i++) //Removing zeros from rows { if(sum[i]==0) {flag_r++;continue;} for(j=0;j<c;j++) { mat2[i2][j]=mat[i][j]; } i2++; } r=r-flag_r; //Decrementing row size. //Copying mat2 to mat for(i=0;i<r;i++) { for(j=0;j<c;j++) { mat[i][j]=mat2[i][j]; } } //For columns for(i=0;i<10;i++) //Clearing sum sum[i]=0; for(j=0;j<c;j++) //Adding columns { for(i=0;i<r;i++) {if(mat[i][j]!=0)sum[j]=2;} } flag_c=0; for(j=0,j2=0;j<c;j++) //Removing zeros from cols { if(sum[j]==0) {flag_c++;continue;} for(i=0;i<r;i++) { mat2[i][j2]=mat[i][j]; } j2++; } c=c-flag_c; //Decrementing col size. //Copying mat2 to mat for(i=0;i<r;i++) { for(j=0;j<c;j++) { mat[i][j]=mat2[i][j]; } } //Output matrix for(i=0;i<r;i++) { for(j=0;j<c;j++) { if(j==0) printf("%d",mat[i][j]); else printf(" %d",mat[i][j]); } printf("\n"); } }