/*
Title: Represent sets using one dimensional arrays and implement functions to perform
1) union
2) intersection
3) difference
4) symmetric difference of two sets
*/
#include<stdio.h>
#include<stdlib.h>
int accept(int a[]) // function definition for accepting array or set a
{
int i,n;
printf("\nEnter no of elements:" );
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
return n;
}
void disp(int a[],int n)
{
int i;
printf("{ ");
for(i=0;i<n;i++)
printf(" %d",a[i]);
if(n==0)
printf(" Array EMPTY ");
printf(" }");
}
int uni(int a[],int b[],int c[],int n1,int n2)
{
int i,j,n3=0,isfound=0;
for(i=0;i<n1;i++) //To copy all elements of set a into set c
{
c[n3]=a[i];
n3++;
}
for(j=0;j<n2;j++) //Set B
{
isfound=0;
for(i=0;i<n3;i++) //Set c
{
if(b[j]==c[i])
{
isfound=1;
break ;
}
}
if(isfound==0)
{
c[n3++]=b[j];
}
}
return n3;
}
int intsect(int a[],int b[],int c[],int n1,int n2)
{
int i,j,n3=0,isfound=0;
for(j=0;j<n2;j++)
{
isfound=0;
for(i=0;i<n1;i++)
{
if(b[j]==a[i])
{
isfound=1;
break;
}
}
if(isfound==1)
c[n3++]=b[j];
}
return n3;
}
int diff(int a[],int b[],int c[],int n1,int n2)
{
int i,j,n3=0,isfound=0;
for(j=0;j<n2;j++)
{
isfound=0;
for(i=0;i<n1;i++)
{
if(b[j]==a[i])
{
isfound=1;
break;
}
}
if(!isfound)
c[n3++]=b[j];
}
return n3;
}
int main()
{
int ch,a[10],b[10],c[10],n1=0,n2=0,n3,k1,k2,c1[10],c2[10];
do
{
system("clear");
printf("\nSET A= ");
disp(a,n1); //user defined function call
printf("\nSET B: ");
disp(b,n2); //function call
printf("\n********MENU************\n");
printf("\n1.INPUT\n2.UNION\n3.INTERSECT\n4.DIFF\n5.SYMM DIFF\n6.EXIT\nENTER UR CHOICE:");
scanf("%d",&ch);
switch(ch)
{
case 1:
printf("\nEnter set A: ");
n1=accept(a); //function call
printf("\nEnter set B: ");
n2=accept(b);
break;
case 2:
printf("\nAUB=");
n3=uni(a,b,c,n1,n2);
disp(c,n3);
getchar();
break;
case 3:
printf("\nA@B=");
n3=intsect(a,b,c,n1,n2); //function call
disp(c,n3);
getchar();
break;
case 4:
printf("\nA-B= ");
n3=diff(b,a,c,n2,n1);
disp(c,n3);
printf("\nB-A= ");
n3=diff(a,b,c,n1,n2);
disp(c,n3);
getchar();
break;
case 5:
k1=diff(b,a,c1,n2,n1);
k2=diff(a,b,c2,n1,n2);
n3=uni(c1,c2,c,k1,k2);
printf("\nAsdB:");
disp(c,n3);
getchar();
break;
case 6:
exit(0);
}
getchar();
}while(ch!=5);
return 0;
}
Title: Represent sets using one dimensional arrays and implement functions to perform
1) union
2) intersection
3) difference
4) symmetric difference of two sets
*/
#include<stdio.h>
#include<stdlib.h>
int accept(int a[]) // function definition for accepting array or set a
{
int i,n;
printf("\nEnter no of elements:" );
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
return n;
}
void disp(int a[],int n)
{
int i;
printf("{ ");
for(i=0;i<n;i++)
printf(" %d",a[i]);
if(n==0)
printf(" Array EMPTY ");
printf(" }");
}
int uni(int a[],int b[],int c[],int n1,int n2)
{
int i,j,n3=0,isfound=0;
for(i=0;i<n1;i++) //To copy all elements of set a into set c
{
c[n3]=a[i];
n3++;
}
for(j=0;j<n2;j++) //Set B
{
isfound=0;
for(i=0;i<n3;i++) //Set c
{
if(b[j]==c[i])
{
isfound=1;
break ;
}
}
if(isfound==0)
{
c[n3++]=b[j];
}
}
return n3;
}
int intsect(int a[],int b[],int c[],int n1,int n2)
{
int i,j,n3=0,isfound=0;
for(j=0;j<n2;j++)
{
isfound=0;
for(i=0;i<n1;i++)
{
if(b[j]==a[i])
{
isfound=1;
break;
}
}
if(isfound==1)
c[n3++]=b[j];
}
return n3;
}
int diff(int a[],int b[],int c[],int n1,int n2)
{
int i,j,n3=0,isfound=0;
for(j=0;j<n2;j++)
{
isfound=0;
for(i=0;i<n1;i++)
{
if(b[j]==a[i])
{
isfound=1;
break;
}
}
if(!isfound)
c[n3++]=b[j];
}
return n3;
}
int main()
{
int ch,a[10],b[10],c[10],n1=0,n2=0,n3,k1,k2,c1[10],c2[10];
do
{
system("clear");
printf("\nSET A= ");
disp(a,n1); //user defined function call
printf("\nSET B: ");
disp(b,n2); //function call
printf("\n********MENU************\n");
printf("\n1.INPUT\n2.UNION\n3.INTERSECT\n4.DIFF\n5.SYMM DIFF\n6.EXIT\nENTER UR CHOICE:");
scanf("%d",&ch);
switch(ch)
{
case 1:
printf("\nEnter set A: ");
n1=accept(a); //function call
printf("\nEnter set B: ");
n2=accept(b);
break;
case 2:
printf("\nAUB=");
n3=uni(a,b,c,n1,n2);
disp(c,n3);
getchar();
break;
case 3:
printf("\nA@B=");
n3=intsect(a,b,c,n1,n2); //function call
disp(c,n3);
getchar();
break;
case 4:
printf("\nA-B= ");
n3=diff(b,a,c,n2,n1);
disp(c,n3);
printf("\nB-A= ");
n3=diff(a,b,c,n1,n2);
disp(c,n3);
getchar();
break;
case 5:
k1=diff(b,a,c1,n2,n1);
k2=diff(a,b,c2,n1,n2);
n3=uni(c1,c2,c,k1,k2);
printf("\nAsdB:");
disp(c,n3);
getchar();
break;
case 6:
exit(0);
}
getchar();
}while(ch!=5);
return 0;
}
No comments:
Post a Comment