## Explain me the logic of given codes?

Hi,

I started learning C and C++ programming languages. I am unable to understand the logic of the given codes... Especially i dont know how "FOR LOOP" works in the given code.

Please explain me in clear manner.

Code:
```int main()
{
int H_Matrix[3][6]={{1,1,0,0,1,0},{1,0,0,1,0,1},{1,1,1,0,0,1}};
int i,j,msg_length,sum=0,k;
int message[10][10];
int rows=3,cols=6,r=0,r2,c;
int code[10][10]={0};
int temp[10][10]={0};
printf("enter the message length\n");
scanf("%d",&msg_length);
printf("enter the message in bits maximum 10 bits\n");

for(j=0;j<msg_length;j++)
{
scanf("%d",&message[0][j]);
}

// Please explain me how below code works
for(c=(cols-rows);c<cols;c++,r++)
{
if(H_Matrix[r][c]==0)
{
//swap needed
for(r2=r+1;r2<rows;r2++)
{
if(H_Matrix[r2][c]!=0)
{
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{
temp[r][j]=H_Matrix[r][j];
H_Matrix[r][j]=H_Matrix[r2][j];
H_Matrix[r2][j]=temp[r][j];
}

}

}
}

}
//Explain me the logic of given codes
for (r2 = r + 1;r2<rows;r2++)
{
if (H_Matrix[r2][c]== 1)
{
for(j=0;j<cols;j++)
{
H_Matrix[r2][j]=H_Matrix[r2][j]^H_Matrix[r][j];
}

}
}

// Back Substitution//Explain me the logic of given codes
for( r2 = 0;r2<r;r2++)
{
if (H_Matrix[r2][c] == 1)
{
for(j=0;j<cols;j++)
{
H_Matrix[r2][j]=H_Matrix[r2][j]^H_Matrix[r][j];
}

}
}
}```