If there are two similar elements in both arrays then only one gets shifted to the third array. 
But upon printing the third array I get garbage values since the number of the same element in one array is removed while the other is shifted. In doing so, I need to reduce the length of array three as well. But what if the number of similar elements entering the code here is unknown to me. How do I avoid printing garbage value? I know there are other methods such as vector that can be also that omit garbage value but what if I need to do it using three arrays where I have to be shifting elements for both of the two elements.
void Union(int a[],int b[],int c[],int m,int n)
    {
        int i,j,k;
        i=j=k=0;
        while(i<m && j<n)
        {
            if(a[i]==b[j])
            {
                c[k++]=a[i++];
                j++;
            }
            else if(a[i]<b[j])
            {
                c[k++]=a[i++];    
            }
             else
            {
                c[k++]=b[j++];
            }
        }
            while(i<m)
            {
                c[k++]=a[i++];
            }
            while(j<n)
            {
                c[k++]=b[j++];
            }
        }
    int main()
    {
    int  a[]={1,2,5,6};
    int b[]={1,2,4,7};
    int m=sizeof(a)/sizeof(a[0]);
    int n=sizeof(b)/sizeof(b[0]);
    int c[m+n];
    Union(a,b,c,m,n);
    for(int i=0;i<m+n;i++)
    {
        cout<<c[i]<<" ";
    }
    return 0;
    }
Here I am getting output as 1 2 4 5 6 7 4717760 0 I got one garbage value and another zero. How could this be omitted?
