离散数学交并补运算、差运算、异或运算的实现--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异或运算交换变量变量值的区别
今天看到一位大神的博客,深受感触.决定也发一篇博客,证明一下我还活着. 于是我翻看以前学习时做的一些笔记,整理了一下,得到了一个关于异或运算交换变量变量值的笔记. 首先来看下面三组表达式,看起来他们都 ...
随机推荐
- jenkins构建前端Vue
最近做项目,使用了前后端分离,后端代码是用maven构建的,前端之前没有了解过, 和开发稍微沟通了一下,开发提供了非常有用的信息, 只要搜索关键字 jenkins 构建 Vue,按照步骤操作,果然编译 ...
- 笔记15:Django提升篇
django提升 (1)打包应用程序:可重用性 打包 Python 程序需要工具:setuptools .打包时候建议使用django-appname 1 在你的 Django 项目目录外创建一个名为 ...
- 第24课经典问题(中)-----关于const对象的疑问
关于const对象的疑问const关键字能否修饰类的对象?如果可以,有什么特性?const关键字能够修饰对象const修饰的对象为只读对象只读对象的成员变量不允许被改变.(对象是只读的,成员变量不允许 ...
- Springboot jackSon -序列化-详解
在项目中有事需要对值为NULL的对象中Field不做序列化输入配置方式如下: [配置类型]: 源码包中的枚举类: public static enum Include { ALWAYS, NON_NU ...
- 使用spring jdbc遇到的一个性能问题
使用JdbcTemplate的queryForList方法,返回特别慢,40多万结果集耗时超过6分钟.双核CPU,占用率始终在50%,内存逐渐增长至2G左右. 进行debug跟进去看,看到jdbcTe ...
- 整合SpringTask实现定时任务
一.框架介绍 SpringTask是Spring自主研发的轻量级定时任务工具,相比于Quartz更加简单方便,且不需要引入其他依赖即可使用. 二.Corn表达式 概述 Cron表达式是一个字符串,包括 ...
- input type属性为number时,去掉右边的上下箭头
加上样式: input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { -webkit-appearance: none; ...
- 【2019.7.15 NOIP模拟赛 T2】与非树(nand)(树形DP)
树形\(DP\) 实际上,这道题应该不是很难. 我们设\(f_{x,i,j}\)表示在以\(x\)为根的子树内,原本应输出\(i\),结果输出了\(j\)的情况数. 转移时,为了方便,我们先考虑与,再 ...
- 项目:git+gitlab+jenkins+ansible上线网站
项目需求 1. 在gitlab中创建一个项目 nginxinstall2. 编写playbook,实现一键部署nginx.部署一个静态测试页.测试部署结果要求: 部署nginx 端口:83 运行身份: ...
- [LeetCode] 711. Number of Distinct Islands II 不同岛屿的个数之二
Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...