/******************************************************************************
-----------------------------SET OPERATIONS-----------------------------------------------------
*******************************************************************************/
#include<stdio.h>
#define N 50
int S1[N],S2[N],S3[N];
void creation(int S[],int n)
{
int i;
S[0]=0;
for(i=1;i<=n;i++)
scanf("%d",&S[i]);
S[0]=n;
}
void display(int S[])
{
int n,i;
n=S[0];
printf("{ ");
for(i=1;i<=n;i++)
printf("%d ",S[i]);
printf("}");
}
int order(int S[],int x)
{
int n,i;
n=S[0];
for( i=1;i<=n;i++)
if(S[i]==x)
return 1;
return 0;
}
void Union(int S1[],int S2[])
{
int n,i,m;
n=S1[0];
for(i=1;i<=n;i++)
S3[i]=S1[i];
m=S2[0];
for(i=1;i<=m;i++)
if(!order(S1,S2[i]))
S3[++n]=S2[i];
S3[0]=n;
}
void intersection(int S1[],int S2[])
{
int n,i,j=0;
n=S1[0];
for(i=1;i<=n;i++)
if(order(S2,S1[i]))
S3[++j]=S1[i];
S3[0]=j;
}
void difference(int S1[],int S2[])
{ int i,n,j=0;
n=S1[0];
S3[0]=0;
for(i=1;i<=n;i++)
if(!order(S2,S1[i]))
S3[++j]=S1[i];
S3[0]=j;
}
int main()
{ int op,n;
printf("------------------------------------------------SET OPERATIONS-----------------------------------------------------");
do
{printf("\n1)creation\n2)print\n3)union\n4)intersection\n5)difference");
printf("\nenter your choice(1-5):");
scanf("%d",&op);
switch(op)
{ case 1:
printf("How many elements for Set-1:");
scanf("%d",&n);
printf("Enter elements:\n");
creation(S1,n);
printf("How many elements for Set-2:");
scanf("%d",&n);
printf("Enter elements:\n");
creation(S2,n);
break;
case 2:
display(S1);
printf("\n");
display(S2);
break;
case 3:
Union(S1,S2);
printf("\nS1 U S2 = S3 = ");
display(S3);
break;
case 4:
intersection(S1,S2);
printf("\nS1 v S2 = S3 = ");
display(S3);
break;
case 5:
difference(S1,S2);
printf("\n S1 - S2 =");
display(S3);
break;
default: printf("enter valid key");
}
}while(op>0);
}