离散数学交并补运算、差运算、异或运算的实现--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异或运算交换变量变量值的区别
今天看到一位大神的博客,深受感触.决定也发一篇博客,证明一下我还活着. 于是我翻看以前学习时做的一些笔记,整理了一下,得到了一个关于异或运算交换变量变量值的笔记. 首先来看下面三组表达式,看起来他们都 ...
随机推荐
- PHP扩展使用-CURL
一.简介 功能:是一个可以使用URL的语法模拟浏览器来传输数据的工具库,支持的协议http.https.ftp.gopher.telnet.dict.file.ldap 资源类型:cURL 句柄和 c ...
- Ubuntu 18.04安装 CUDA 10.1 、cuDNN 7.6.5、PyTorch1.3
转载请注明出处 BooTurbo https://www.cnblogs.com/booturbo/p/11834661.html 安装平台及环境 CPU:i9-9900k桌面级 GPU:RTX 2 ...
- MNIST数据集上卷积神经网络的简单实现(使用PyTorch)
设计的CNN模型包括一个输入层,输入的是MNIST数据集中28*28*1的灰度图 两个卷积层, 第一层卷积层使用6个3*3的kernel进行filter,步长为1,填充1.这样得到的尺寸是(28+1* ...
- Deep Q Network(DQN)原理解析
1. 前言 在前面的章节中我们介绍了时序差分算法(TD)和Q-Learning,当状态和动作空间是离散且维数不高时可使用Q-Table储存每个状态动作对的Q值,而当状态和动作空间是高维连续时,使用Q- ...
- Ubuntu下安装Rabbitmq和golang环境
安装及配置Rabbitmq 1. 安装: sudo apt-get install rabbitmq-server 2. 启动web管理插件 sudo rabbitmq-plugins enable ...
- 【Spring IoC】IoC容器初始化(二)
Ioc容器的初始化是由refresh()方法来启动的,这个方法标志着Ioc容器的正式启动. 具体来说这个启动过程包括三个基本过程: BeanDefinition的Resource定位 BeanDefi ...
- JDOJ 1790: 高精度A-B
JDOJ 1790: 高精度A-B JDOJ传送门 洛谷 P2142 高精度减法 洛谷传送门 题目描述 高精度减法 输入格式 两个整数a,b(第二个可能比第一个大) 输出格式 结果(是负数要输出负号) ...
- NOIP 2002 过河卒
洛谷P1002 https://www.luogu.org/problemnew/show/P1002 JDOJ 1290 https://neooj.com/oldoj/problem.php?id ...
- 使用教育邮箱免费申请JetBrains套装(IntelliJ, PhpStorm, WebStorm...)
想下个PhpStorm来写php,发现可以使用教育账号白嫖. 申请步骤 打开 申请页面 ,点击 “APPLY NOW” 开始申请. 填写姓名,以及学校提供给你的邮箱(edu后缀邮箱,或.end.cn) ...
- 热情组——项目冲刺 Day4
项目相关 作业相关 具体描述 班级 班级链接 作业要求 链接地址 团队名称 热情组 作业目标 实现软件制作,以及在福大的传播 Github链接 链接地址 SCRUM部分: 成员昵称 昨日目标 开始时间 ...