Here is the program in cpp:
#include <iostream.h>
#include <conio.h>
using namespace std;
const int MAX1 = 5 ;
const int MAX2 = 7 ;
class array
{
private :
int \*arr ;
int size ;
public :
void create ( int sz ) ;
void sort( ) ;
void display( ) ;
void merge ( array &a , array &b ) ;
} ;
// creates array of given size sz, dynamically
void array :: create ( int sz )
{
size = sz ;
arr = new int\[size\] ;
int n ;
for ( int i = 0 ; i < size ; i++ )
{
cout << "\\nEnter the element no. " << ( i + 1 ) << " " ;
cin >> n ;
arr\[i\] = n ;
}
}
// sorts array in ascending order
void array :: sort( )
{
int temp ;
for ( int i = 0 ; i < size ; i++ )
{
for ( int j = i + 1 ; j < size ; j++ )
{
if ( arr\[i\] > arr\[j\] )
{
temp = arr\[i\] ;
arr\[i\] = arr\[j\] ;
arr\[j\] = temp ;
}
}
}
}
// displays the contents of array
void array :: display( )
{
for ( int i = 0 ; i < size ; i++)
cout << " " << arr\[i\] ;
}
// merges two arrays of different size
void array :: merge ( array &a, array &b )
{
int i, k, j ;
size = a.size + b.size ;
arr = new int\[size\] ;
for ( k = 0, j = 0, i = 0 ; i <= size ; i++ )
{
if ( a.arr\[k\] < b.arr\[j\] )
{
arr\[i\] = a.arr\[k\] ;
k++ ;
if ( k >= a.size )
{
for ( i++ ; j < b.size ; j++, i++ )
arr\[i\] = b.arr\[j\] ;
}
}
else
{
arr\[i\] = b.arr\[j\] ;
j++ ;
if ( j >= b.size )
{
for ( i++ ; k < a.size ; k++, i++ )
arr\[i\] = a.arr\[k\] ;
}
}
}
}
int main( )
{
array a ;
cout << "\\nEnter elements for first array: \\n" ;
a.create ( MAX1 ) ;
array b ;
cout << "\\nEnter elements for second array: \\n" ;
b.create ( MAX2 ) ;
a.sort( ) ;
b.sort( ) ;
cout << "\\nFirst array: \\n" ;
a.display( ) ;
cout << "\\n\\nSecond array: \\n" ;
b.display( ) ;
cout << "\\n\\nAfter Merging: \\n" ;
array c ;
c.merge ( a, b ) ;
c.display( ) ;
}
Still to improve.