/*************************************************** * Problem #1 * CP-2 Warmup problem sheet (1999-2000) **************************************************/ /* * Question: * Write a complete C program to do the following task: * (a) accept input for 2 integer arrays of size 10, * (b) form a third array that will contain the elements of * both the arrays sorted in ascending order. * The new array should not have duplicate elements. */ #include <stdio.h> #define SIZE 10 main() { int arr1[SIZE],arr2[SIZE]; int result[2*SIZE]; int i,n; printf("Give the first array of size: %d\n",SIZE); for(i=0;i<SIZE;i++) { printf("%d element of array-1: ",i+1); scanf("%d",&arr1[i]); } printf("Give the second array of size: %d\n",SIZE); for(i=0;i<SIZE;i++) { printf("%d element of array-2: ",i+1); scanf("%d",&arr2[i]); } n=sort(result,0,arr1,SIZE); n=sort(result,n,arr2,SIZE); for(i=0;i<n;i++) printf("%d\n",result[i]); } /* * This function assumes that the result is an array containing * n elements sorted in ascending order, * and the elements in arr1 of size 'size' should be inserted into result * without * disturbing the order (Ascending order), eliminating duplication of * elements in the result. */ int sort(int *result,int n,int *arr1,int size) { int i=0,j,k; if(n==0) { result[0]=arr1[0]; i=1; } for(;i<size;i++) { printf("%d\t%d\n",i,n); for(j=0;j<n;j++) { if(arr1[i]<result[j]) { for(k=n;k>j;k--) result[k]=result[k-1]; result[j]=arr1[i]; n++; break; } if(arr1[i]==result[j]) break; } if(j!=n) continue; result[n++]=arr1[i]; } printf("Sorted array size: %d\n",n); return n; }