两个集合的并、交,相对补,对称差的运算
2018-01-04 14:37
309 查看
/*编写程序实现两个集合的并、交,相对补,对称差的运算并判断两个集合是否相等?
(2)功能要求
①输入集合A与集合B的元素。
②输出集合A与B的并、交、相对补、差、对称差运算。
③输出集合A与B是否相等的断定结果。
④输出集合A与B的幂集。*/
#include "stdio.h"
int disc;
void xd(int a[],int b[],int n,int m)
{
if (n==m&&jj(a,b,n,m)==n)
{
printf("相等!\n");
}
else
printf("不相等!\n");
}
int jj(int a[],int b[],int n,int m)
{
int i,j,k=0;
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
if (a[i]==b[j])
{
printf("%d,",a[i]);
k++;
}
}
}
return k;
}
void bj(int a[],int b[],int n,int m)
{
int i,j,x,k,find=0;
int p[100];
for (i=0;i<n;i++)
{
p[i]=a[i];
}
for (j=0;j<m;j++)
{
for (k=0;k<n;k++)
{
if (a[k]==b[j])
find=1;
}
if (find==0)
{
p[i]=b[j];
i++;
}
find=0;
}
x=i;
for(i=0;i<x;i++)
{
printf("%d,",p[i]);
}
}
int * xb(int a[],int b[],int n,int m)
{
int i=0,j,k,find=0;
int p[100];
for (j=0;j<m;j++)
{
for (k=0;k<n;k++)
{
if (a[k]==b[j])
find=1;
}
if (find==0)
{
p[i]=b[j];
i++;
}
find=0;
}
disc=i;
return p;
}
void xx(int a[],int b[],int n,int m)
{
}
int main()
{
int a[10],b[10];
int i,j,e=0,f=0;
int x,y;
int * q;
int * p;
int aa[100];
int bb[100];
printf ("请输入的A集合的个数N:");
scanf("%d",&x);
printf("请输入B集合的个数M:");
scanf("%d",&y);
printf("集合A:\n");
for (i=0;i<x;i++)
{
scanf("%d",&a[i]);
}
printf("集合B:\n");
for (j=0;j<y;j++)
{
scanf("%d",&b[j]);
}
printf("该两集合是否相等:\n");
xd(a,b,x,y);
printf("\n");
printf("该两个集合的并集结果如下:\n");
bj(a,b,x,y);
printf("\n");
printf("该两个集合的交集结果如下:\n");
jj(a,b,x,y);
printf("\n");
printf("该A-B集合的相对补集结果如下:\n");
q=xb(b,a,y,x);
for(i=0;i<disc;i++)
{
aa[i]=q[i];
printf("%d ",q[i]);
e++;
}
printf("\n");
printf("该B-A集合的相对补集结果如下:\n");
p=xb(a,b,x,y);
for(i=0;i<disc;i++)
{
bb[i]=p[i];
printf("%d ",p[i]);
f++;
}
printf("\n");
printf("该两个集合的相对差集结果如下:\n");
bj(aa,bb,e,f);
}
(2)功能要求
①输入集合A与集合B的元素。
②输出集合A与B的并、交、相对补、差、对称差运算。
③输出集合A与B是否相等的断定结果。
④输出集合A与B的幂集。*/
#include "stdio.h"
int disc;
void xd(int a[],int b[],int n,int m)
{
if (n==m&&jj(a,b,n,m)==n)
{
printf("相等!\n");
}
else
printf("不相等!\n");
}
int jj(int a[],int b[],int n,int m)
{
int i,j,k=0;
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
if (a[i]==b[j])
{
printf("%d,",a[i]);
k++;
}
}
}
return k;
}
void bj(int a[],int b[],int n,int m)
{
int i,j,x,k,find=0;
int p[100];
for (i=0;i<n;i++)
{
p[i]=a[i];
}
for (j=0;j<m;j++)
{
for (k=0;k<n;k++)
{
if (a[k]==b[j])
find=1;
}
if (find==0)
{
p[i]=b[j];
i++;
}
find=0;
}
x=i;
for(i=0;i<x;i++)
{
printf("%d,",p[i]);
}
}
int * xb(int a[],int b[],int n,int m)
{
int i=0,j,k,find=0;
int p[100];
for (j=0;j<m;j++)
{
for (k=0;k<n;k++)
{
if (a[k]==b[j])
find=1;
}
if (find==0)
{
p[i]=b[j];
i++;
}
find=0;
}
disc=i;
return p;
}
void xx(int a[],int b[],int n,int m)
{
}
int main()
{
int a[10],b[10];
int i,j,e=0,f=0;
int x,y;
int * q;
int * p;
int aa[100];
int bb[100];
printf ("请输入的A集合的个数N:");
scanf("%d",&x);
printf("请输入B集合的个数M:");
scanf("%d",&y);
printf("集合A:\n");
for (i=0;i<x;i++)
{
scanf("%d",&a[i]);
}
printf("集合B:\n");
for (j=0;j<y;j++)
{
scanf("%d",&b[j]);
}
printf("该两集合是否相等:\n");
xd(a,b,x,y);
printf("\n");
printf("该两个集合的并集结果如下:\n");
bj(a,b,x,y);
printf("\n");
printf("该两个集合的交集结果如下:\n");
jj(a,b,x,y);
printf("\n");
printf("该A-B集合的相对补集结果如下:\n");
q=xb(b,a,y,x);
for(i=0;i<disc;i++)
{
aa[i]=q[i];
printf("%d ",q[i]);
e++;
}
printf("\n");
printf("该B-A集合的相对补集结果如下:\n");
p=xb(a,b,x,y);
for(i=0;i<disc;i++)
{
bb[i]=p[i];
printf("%d ",p[i]);
f++;
}
printf("\n");
printf("该两个集合的相对差集结果如下:\n");
bj(aa,bb,e,f);
}
相关文章推荐
- C语言 集合运算 并、交,相对补,对称差,判断两个集合是否相等,求集合幂集(改进幂集)
- C语言 集合运算 并、交,相对补,对称差,判断两个集合是否相等,求集合幂集
- 两个集合的并、交,相对补,对称差
- 集合的基本运算: 依据集合运算规则,实现任意给定两个集合的交、并、差、笛卡儿积运算,和第一个集合的幂集,并显示运算结果。
- 实现两个集合的相等判定、并、交和差运算
- 两个链表实现集合的运算
- 离散数学-集合运算基本法则
- 用位运算来处理集合中的交,并,补(对称差)运算
- 集合的交 并 差 补 运算
- JAVA中如何取出两个不同List对象(对象一致)中所有不同的对象的集合
- java计算两个经纬度相对的方向角
- 第六章 集合运算
- PTA 表达式转换 算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。
- 求两个集合的差集
- A、B两个整数集合,设计一个算法求他们的交集,尽可能的高效。
- ListView集合中设置标记 setTag();方法带一个参数和两个参数的区别,以及设置标记时ViewHolder中的每一个属性控件都需要设置一次,否则在Item中每一个控件的点击事件中取出设置的标
- 最小公倍数 求两个数字的最小公倍数是很常见的运算。比如,3和5的最小公倍是15。6和8的最小公倍数是24。
- Java--交换两个变量的值的三种方法:借助中间量交换,数值相加减交换,位移运算交换
- 集合运算(UNION 与UNION ALL)
- C#控制台基础 已知两个list<>集合,除去重复后合并成一个