/******************************************************************************
cartesian product
*******************************************************************************/
#include<stdio.h>
#include<stdlib.h>
int a[100],b[100];
int m,n,i,j,k,count;
void cartesian()
{
printf("\nafter cartesian product:{");
for(i=0;i<n-count;i++)
{
for(j=0;j<m-count;j++)
{
printf("(%d,%d),",a[i],b[j]);
}
}
printf("}");
}
void print(int a[],int n)
{
for(j=0;j<n-count;j++)
{
printf("\n%d",a[j]);
}
}
void duplicate(int a[],int n)
{
count=0;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]==a[j])
{
count++;
for(k=j;k<n;k++)
{
a[k]=a[k+1];
}
n--;
j--;
}
}
}
printf("\nthe duplicate elements are:%d",count);
}
int main()
{
printf("\nenter the no.of elements in first set:");
scanf("\n%d",&n);
printf("\nenter the elements in first set:");
for(i=0;i<n;i++)
{
scanf("\n%d",&a[i]);
}
duplicate(a,n);
printf("\nenter the no.of elements in second set:");
scanf("\n%d",&m);
printf("\nenter the elements in second set:");
for(j=0;j<m;j++)
{
scanf("\n%d",&b[j]);
}
duplicate(b,m);
printf("\nfirst set is:");
print(a,n);
printf("\nsecond set is:");
print(b,m);
cartesian();
}