Merging Two-Dimensional Arrays (Matrices)

In the article Merging
One Dimensional Arrays
, we discussed how to merge one-dimensional
arrays, in this article we will be discussing about the merging of two-dimensional
arrays. Merging as you know is the process of combining two similar things.
In the context of arrays, it means to form a big array from two smaller arrays
which has all the elements from both the arrays.


In case of one-dimensional arrays there is only one way in which two arrays
can be merged but in case of two-dimensional arrays there are two ways.


Suppose, we have the following two 2d arrays (matrices):


mat1={
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
}

and

mat2={
{10, 11, 12},
{13, 14, 15},
{16, 17, 18}
}

then they can be merged in the following two ways:

merge_row={
{1, 2, 3, 10, 11, 12},
{4, 5, 6, 13, 14, 15},
{7, 8, 9, 16, 17, 18}
}

merge_col={
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
{10, 11, 12},
{13, 14, 15},
{16, 17, 18}
}

Now that you know the funda, we move on to the example program to illustrate
this:


  // example program to illustrate
// merging of two-dimensional or
// 2d arrays(matrices)
#include<iostream.h>

#define ROW1 3
#define ROW2 3
#define COL1 3
#define COL2 3

void main(void)
{
int i,j;
int matrix1[ROW1][COL1];
int matrix2[ROW2][COL2];

// these will store merged
// matrices
int merge_row[ROW1][COL1+COL2];
int merge_col[ROW1+ROW2][COL1];

// input the elements
cout<<"Input elements for MATRIX 1:\n";
for(i=0;i<ROW1;i++)
{
cout<<"ROW "<<i+1<<":\n";
for(j=0;j<COL1;j++)
cin>>matrix1[i][j];
}

cout<<"\nInput elements for MATRIX 2:\n";
for(i=0;i<ROW2;i++)
{
cout<<"ROW "<<i+1<<":";
for(j=0;j<COL2;j++)
cin>>matrix2[i][j];
}
//input complete

// merge matrices
// row merge starts
for(i=0;i<ROW1;i++)
for(j=0;j<COL1;j++)
merge_row[i][j]=matrix1[i][j];

for(i=0;i<ROW2;i++)
for(j=0;j<COL2;j++)
merge_row[i][j+COL2]=matrix2[i][j];
// row merge complete

// column merge starts
for(i=0;i<ROW1;i++)
for(j=0;j<COL1;j++)
merge_col[i][j]=matrix1[i][j];

for(i=0;i<ROW2;i++)
for(j=0;j<COL2;j++)
merge_col[i+ROW1][j]=matrix2[i][j];
// column merge complete

// show the merged martices
cout<<"\nROW Merge:\n\n";
for(i=0;i<ROW1;i++)
{
for(j=0;j<COL1+COL2;j++)
cout<<" "<<merge_row[i][j];

cout<<endl;
}

cout<<"\nCOLUMN Merge:\n\n";
for(i=0;i<ROW1+ROW2;i++)
{
for(j=0;j<COL1;j++)
cout<<" "<<merge_col[i][j];

cout<<endl;
}
}

Good-Bye!


Related Articles:


Check out this stream