Suppose A, B, C are arrays of integers of size n, m, and n + m respectively. The numbers in array A and B appear in descending order. Write a user-defined function in C to produce third array C by merging arrays A and B in descending order.
#include <stdio.h>
void merge(int A[], int B[], int C[], int n, int m, int *k);
int main()
{
int A[100], B[100], C[200], i, n, m, k;
printf("\nEnter number of elements you want to insert in first array :");
scanf("%d", &n);
printf("Enter element in descending order\n");
for (i = 0; i < n; i++)
{
printf("Enter element %d :", i + 1);
scanf("%d", &A[i]);
}
printf("\nEnter number of elements you want to insert in second array :");
scanf("%d", &m);
printf("Enter element in descending order\n");
for (i = 0; i < m; i++)
{
printf("Enter element :", i + 1);
scanf("%d", &B[i]);
}
merge(A, B, C, n, m, &k);
printf("\nThe Merged Array in Descending Order\n");
for (i = 0; i < k; i++)
{
printf("%d ", C[i]);
}
return 0;
}
void merge(int A[], int B[], int C[], int n, int m, int *k)
{
int i = 0, j = 0, t;
*k = 0;
while (i < n && j < m)
{
if (A[i] > B[j])
{
C[(*k)++] = A[i++];
}
else if (A[i] < B[j])
{
C[(*k)++] = B[j++];
}
else
{
C[(*k)++] = A[i++];
j++;
}
}
for (t = i; t < n; t++)
{
C[(*k)++] = A[t];
}
for (t = j; t < m; t++)
{
C[(*k)++] = B[t];
}
}
Enter number of elements you want to insert in first array :5
Enter element in descending order
Enter element 1 :30
Enter element 2 :25
Enter element 3 :19
Enter element 4 :11
Enter element 5 :6
Enter number of elements you want to insert in second array :4
Enter element in descending order
Enter element :22
Enter element :15
Enter element :10
Enter element :1
The Merged Array in Descending Order
30 25 22 19 15 11 10 6 1