离散数学交并补运算、差运算、异或运算的实现--biaobiao88
对集合的交并补运算、差运算及异或运算的代码,可输入字符与数字,内容简单,详情请看以下代码
#include<iostream>
using namespace std; int main()
{
//全集u
char u[] = {'a','b','c','d','e','f','g','h'};
char a[] = {'a','b','c','g'};
char b[] = {'d','e','f','g'};
char c[] = {'a','c','f'};
char d[] = {'f','h'};
////--------------------以下内容可输入操作---------------------------
// cout << "请分别输入全集U、集合A、集合B、集合C、集合D的个数:" ;
// int uu,aa,bb,cc,dd;
// cin >> uu >> aa >> bb >> cc >> dd;
// char u[uu],a[aa],b[bb],c[cc],d[dd];
// cout << "请输入集合U中" << uu << "个元素:";
// cin >> u;
// cout << "请输入集合A中" << aa << "个元素:";
// cin >> a;
// cout << "请输入集合B中" << bb << "个元素:";
// cin >> b;
// cout << "请输入集合C中" << cc << "个元素:";
// cin >> c;
// cout << "请输入集合D中" << dd << "个元素:";
// cin >> d;
////--------------------以上内容可输入操作---------------------------
//交运算b交c
int bn = sizeof(b);
int cn = sizeof(c);
cout << "B∩C:";
for(int i = ;i < bn;i++)
{
for(int j = ;j < cn;j++)
{
if(b[i] == c[j])
{
cout << b[i] << " ";
}
}
}
cout << endl;
//并运算a并b
int an = sizeof(a);
cout << "A∪B:";
for(int i = ;i < an;i++)//并运算操作,先输出一个字符数组,再对另一个字符数组进行挑选
cout << a[i] << " ";
for(int i = ;i < bn;i++)
{
int flag = ;
for(int j = ;j < an;j++)
{ if(b[i] == a[j])//两元素相同 ,则不需要该元素,因为之前已经输出过该元素了
{
flag = ;
}
}
if(flag == )
{
cout << b[i] << " ";
}
}
cout << endl;
//差运算g = b - d
int dn = sizeof(d);
cout << "B-D :";
//差运算解释:在集合B中除去集合D中含有的元素
for(int i = ;i < bn;i++)//两层循环对两个数组依次遍历,不符合差运算条件的即不输出跳过
{
int flag = ;
for(int j = ;j < dn;j++)
{
if(b[i] == d[j])
{
flag = ;
}
}
if(flag == )
{
cout << b[i] << " ";
}
}
// for(int i = 0;i < dn;i++)
// {
// int flag = 1;
// for(int j = 0;j < bn;j++)
// {
// if(d[i] == b[j])
// {
// flag = 0;
// }
// }
// if(flag == 1)
// {
// cout << d[i] << " ";
// }
// }
cout << endl;
//非运算h=非d
int un = sizeof(u);
cout << "﹁D :";
for(int i = ;i < un;i++)//非运算对全集u进行操作
{
int flag = ;
for(int j = ;j < dn;j++)
{
if(u[i] == d[j])
{
flag = ;
}
}
if(flag == )
{
cout << u[i] << " ";
}
}
cout << endl;
//b异或c
//异或运算的公式为 b异或c=(b-c)并上(c-b)
//解决集合异或问题,将分为两步进行
//b-c
// cout << "B-C :";
cout << "B异或C:";
int m = ;
char zuo[m];//定义集合b-集合c,将结果存储在字符数组zuo中
for(int i = ;i < bn;i++)
{
int flag = ;
for(int j = ;j < cn;j++)
{
if(b[i] == c[j])//如果两个元素相同,则说明重复了,此if语句为了排出重复元素的
{
flag = ;
}
}
if(flag == )
{
zuo[m++] = b[i];//将满足条件的元素记录并输出
cout << b[i] << " ";
}
}
// for(int i = 0;i < m;i++)
// cout << zuo[i] << " ";
// cout << endl;
//c-b
// cout << "C-B :";
for(int i = ;i < cn;i++)//计算出集合C-集合B,在过程中对满足条件的元素继续进行判断,看是否与集合B-集合C中的元素重复
{
int flag = ;
for(int j = ;j < bn;j++)
{
if(c[i] == b[j])//同上
{
flag = ;
}
}
if(flag == )//对已满足集合C-集合B的元素继续判断是否与zuo数组中的元素是否有相同的,以下步骤即为合并俩集合并且输出
{
int flag1 = ;
for(int k = ;k < m;k++)
{
if(zuo[k] == c[i])
flag1 = ;
}
if(flag == )
cout << c[i] << " ";
// you[n++] = c[i];
// cout << c[i] << " ";
}
}
// for(int i = 0;i < n;i++)
// cout << you[i] << " ";
return ;
}
静态运行结果:
动态运行结果:
此代码为实验的要求,我用了一整个晚上的时间去实现这个我理想的目的,勉勉强强算是完成了
最重要的是在于对离散数学中,集合的交并补、差运算、异或运算的理解,重在理解与应用,才能抽象出模型
代码有点乱,但是思路还是在那的,认真看应该能理解。
离散数学交并补运算、差运算、异或运算的实现--biaobiao88的更多相关文章
- Java中「与运算,或运算,异或运算,取反运算。」
版权声明一:本文为博主原创文章,转载请附上原文出处链接和本声明.版权声明二:本网站的所有作品会及时更新,欢迎大家阅读后发表评论,以利作品的完善.版权声明三:对不遵守本声明或其他违法.恶意使用本网内容者 ...
- 对java位运算之异或运算的一点记录
首先,异或运算是,每个位上的数不同为1,相同为0. 其次,对两个数值变量的值进行三次异或运算就等于是交换了两个变量的值. 例如: int a = 4; int b = 10; a = a ^ b; b ...
- java中与运算,或运算,异或运算,取反运算
//与运算 & 规则 :都为1时才为1 System.out.println( 7 & 9); /* * 7二进制 0111 ...
- 网络误区:不用中间变量交换2个变量的value,最高效的是异或运算.
本文记录了不使用中间变量交换2个变量的value,很多的网络留言说是直接异或运算就可以了,而且效率很高,是真的吗? 这里简单的说一下我的环境:Win7 32位,Qt creator 5.4.1 编译器 ...
- 常用进制的转换、进制数的and与or或xor异或运算
[十进制转换成其他进制]例:将25转换为二进制数 解: 25÷2=12 余数1 12÷2=6 余数0 6÷2=3 余数0 3÷2=1 余数1 1÷2=0 余数1 所 ...
- 关于一些运算(&(与运算)、|(或运算)、^(异或运算)........)的本质理解【转】
看到一篇博客,关于一些运算的解析,觉得有用,怕以后找不着,直接复制下来,以备以后学习用 原文链接:https://blog.csdn.net/xiaopihaierletian/article/det ...
- C++ 异或运算及其应用
前置知识: 1.一个整数自己跟自己异或,结果为0 //因为异或的法则为,相同为0,不同为1,注意这里所说的都是二进制位. 2.任意一个整数跟0异或,结果为本身. //因为1异或0得1,0异或0,得 ...
- 与运算(&)、或运算(|)、异或运算(^)、右移运算符(>>>)本质介绍
按位与运算符(&) 参加运算的两个数据,按二进制位进行"与"运算. 运算规则:0&0=0; 0&1=0; 1&0=0; 1&1= ...
- C、C++、Java异或运算交换变量变量值的区别
今天看到一位大神的博客,深受感触.决定也发一篇博客,证明一下我还活着. 于是我翻看以前学习时做的一些笔记,整理了一下,得到了一个关于异或运算交换变量变量值的笔记. 首先来看下面三组表达式,看起来他们都 ...
随机推荐
- kolla-ansible部署openstack allinone单节点
环境准备 2 network interfaces 8GB main memory 40GB disk space 1.修改hostname hostnamectl set-hostname koll ...
- 构建根文件系统之init进程分析
busybox是ls.cp等命令的集合. 执行ls时,实际上是执行了busybox ls 执行cp时,实际上是执行了busybox cp 分析init程序之前,再让我们回想一下我们的目标:u-boot ...
- idea快捷键的使用
IntelliJ IDEA 问题解决:1.乱码,主要是快捷键的字样显示乱码 中文字体显示乱码? 2.菜单项等的字体太小,怎么能设置下? -------------------------------- ...
- 201871010110-李华《面向对象程序设计(java)》第十三周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- 201871010128-杨丽霞《面向对象程序设计(java)》第十三周学习总结
201871010128-杨丽霞<面向对象程序设计(java)>第十三周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- python27期day10:函数的动态参数、函数的注释、函数的名称空间、函数的嵌套、global(修改全局的)、nonlocal(修改局部的)、函数名的第一类对象及使用、作业题。
1.动态参数的作用: 能够接收不固定长度参数 位置参数过多时可以使用动态参数 * args是程序员之间约定俗称(可以更换但是不建议更换) * args获取的是一个元组 ** kwargs获取的是一个字 ...
- dateNode 启动不了
dateNode 启动不了 进去路径中找到 name和data文件夹,current下面分别有 一个 version文件,打开发现两个clusterId都不一样 把name和data文件里面的ver ...
- vue中使用kindeditor富文本编辑器2
第一步,下载依赖 yarn add kindeditor 第二步,建立kindeditor.vue组件 <template> <div class="kindeditor& ...
- A1067 Sort with Swap(0, i) (25 分)
一.技术总结 题目要求是,只能使用0,进行交换位置,然后达到按序排列,所使用的最少交换次数 输入时,用数组记录好每个数字所在的位置. 然后使用for循环,查看i当前位置是否为该数字,核心是等待0回到自 ...
- VMWARE在UEFI下启动PE.ISO
1.编辑虚拟机设置→选项→高级→通过EFI而非BIOS引导勾选. 2.虚拟机→电源→打开电源时进入固件,进入之后修改光驱为第一引导. 3.挂载PE.ISO,启动时虚拟机顶部出现Press any ke ...