离散数学交并补运算、差运算、异或运算的实现--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异或运算交换变量变量值的区别
今天看到一位大神的博客,深受感触.决定也发一篇博客,证明一下我还活着. 于是我翻看以前学习时做的一些笔记,整理了一下,得到了一个关于异或运算交换变量变量值的笔记. 首先来看下面三组表达式,看起来他们都 ...
随机推荐
- Shel脚本-初步入门之《02》
Shel脚本-初步入门-什么是 Shell 脚本 2.什么是 Shell脚本 当命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时,改程序就被称为 Shell 脚本.如果在 Shell 脚本 ...
- JS高阶---作用域面试
面试题1: ,答案为10 有一点需要明确:作用域是在定义编写代码时已经决定好的 面试题2: 结果1: 结果2: 首先在内部作用域找,没有 然后在全局作用域找,window没有,所以会报错 如果想找对象 ...
- JS高阶---回调函数
1.什么函数是回调函数? 此时两者的执行并没有先后顺序 两个都是回调函数 满足三个特点就是回调 .定义了函数 .没有主动调用 .最后执行了 2.常见的回调函数有哪些? .DOM事件回调函数 .定时器回 ...
- 代码审计-md5加密相等绕过
<?php $md51 = md5('QNKCDZO'); $a = @$_GET['a']; $md52 = @md5($a); if(isset($a)){ if ($a != 'QNKCD ...
- 283.移动零 关于列表list与remove原理*****(简单)
题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 注意,该题目要求不开辟行的数组空间,在原数据上进行操作. 示例: 输入: [0,1,0,3,12 ...
- SPOJ - Triple Sums
[传送门] FFT第一题! 构造多项式 $A(x) = \sum x ^ {s_i}$. 不考虑题目中 $i < j < k$ 的条件,那么 $A^3(x)$ 每一项对应的系数就是答案了. ...
- 了解html
什么是html? html:Hyper Text Markup Language(超文本标记语言) 纯文本:只能存储一些简单的字符(不能插入图片.视频...) 注意:html不是一种编程语言(它没有任 ...
- DBLog: A Generic Change-Data-Capture Framework
转自:https://medium.com/netflix-techblog/dblog-a-generic-change-data-capture-framework-69351fb9099b 期待 ...
- 数据结构——链队列(linked queue)
/* linkedQueue.c */ /* 链队列 */ #include <stdio.h> #include <stdlib.h> #include <stdboo ...
- [RN] React Native ScrollView去掉自带的间隔
React Native ScrollView去掉自带的间隔 使用ScrollView时,自带了一个类似marginTop的效果,将其去掉 <ScrollView automaticallyAd ...