对集合的交并补运算、差运算及异或运算的代码,可输入字符与数字,内容简单,详情请看以下代码

#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的更多相关文章

  1. Java中「与运算,或运算,异或运算,取反运算。」

    版权声明一:本文为博主原创文章,转载请附上原文出处链接和本声明.版权声明二:本网站的所有作品会及时更新,欢迎大家阅读后发表评论,以利作品的完善.版权声明三:对不遵守本声明或其他违法.恶意使用本网内容者 ...

  2. 对java位运算之异或运算的一点记录

    首先,异或运算是,每个位上的数不同为1,相同为0. 其次,对两个数值变量的值进行三次异或运算就等于是交换了两个变量的值. 例如: int a = 4; int b = 10; a = a ^ b; b ...

  3. java中与运算,或运算,异或运算,取反运算

      //与运算 &  规则 :都为1时才为1        System.out.println( 7 & 9);        /*         *  7二进制 0111     ...

  4. 网络误区:不用中间变量交换2个变量的value,最高效的是异或运算.

    本文记录了不使用中间变量交换2个变量的value,很多的网络留言说是直接异或运算就可以了,而且效率很高,是真的吗? 这里简单的说一下我的环境:Win7 32位,Qt creator 5.4.1 编译器 ...

  5. 常用进制的转换、进制数的and与or或xor异或运算

    [十进制转换成其他进制]例:将25转换为二进制数 解: 25÷2=12 余数1  12÷2=6   余数0  6÷2=3     余数0  3÷2=1     余数1  1÷2=0     余数1 所 ...

  6. 关于一些运算(&(与运算)、|(或运算)、^(异或运算)........)的本质理解【转】

    看到一篇博客,关于一些运算的解析,觉得有用,怕以后找不着,直接复制下来,以备以后学习用 原文链接:https://blog.csdn.net/xiaopihaierletian/article/det ...

  7. C++ 异或运算及其应用

    前置知识: 1.一个整数自己跟自己异或,结果为0   //因为异或的法则为,相同为0,不同为1,注意这里所说的都是二进制位. 2.任意一个整数跟0异或,结果为本身. //因为1异或0得1,0异或0,得 ...

  8. 与运算(&)、或运算(|)、异或运算(^)、右移运算符(>>>)本质介绍

    按位与运算符(&) 参加运算的两个数据,按二进制位进行"与"运算. 运算规则:0&0=0;  0&1=0;   1&0=0;    1&1= ...

  9. C、C++、Java异或运算交换变量变量值的区别

    今天看到一位大神的博客,深受感触.决定也发一篇博客,证明一下我还活着. 于是我翻看以前学习时做的一些笔记,整理了一下,得到了一个关于异或运算交换变量变量值的笔记. 首先来看下面三组表达式,看起来他们都 ...

随机推荐

  1. 笔记8:Linux知识

    linux学习笔记 1 Linux介绍 1.1 基本知识 应用领域:服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQ ...

  2. 非root用户安装、配置mysql

    1. 下载mysql,可能是因为服务器操作系统版本较低(CentOS4.3),安装5.7时提示缺lib,刚好我不需要一定安装新版,所以下载了5.1 Linux - Generic (glibc 2.5 ...

  3. 201871010124-王生涛《面向对象程序设计(java)》第四周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...

  4. 201871020225-牟星源《面向对象程序设计(java)》第十一周学习总结

    201871020225-牟星源<面向对象程序设计(java)>第十一周学习总结 博文正文开头: 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu ...

  5. Maven 学习资料

    学习资料 网址 在线插件信息 http://maven.apache.org/plugins/

  6. IDEA安装maven和设置自动配置下载包

    在我们开发的过程中如果环境配置好了,对于我们开发将优很大作用,减少可开发的时间,接下来我就讲解一下maven的安装和配置,以及在idea上配置,希望此教程同时对大家优帮助. 1.1.下载maven和安 ...

  7. Django之创建项目、目录层级、基本操作

    创建项目 在合适的位置创建一个目录 打开cmd窗口,进入到创建的目录内 输入django-admin startproject project 目录层级 manage.py 是一个命令行工具,可以使我 ...

  8. LOJ 数列分块入门系列

    目录 1.区间加+单点查 每个块维护tag,散的暴力改. code: #include<bits/stdc++.h> using namespace std; const int maxn ...

  9. .net使用IIdentity和IPrincipal实现自定义身份及权限认证【转】

    1,通过继承BasePage页实现角色权限控制 context.User中保存的信息就是相关的角色与权限信息.Context.User类型为System.Security.Principal.IPri ...

  10. Mysql 视图&事务&触发器

    参考资料 一.视图 视图的含义: 视图是一个虚拟表,是从数据库中一个或者多个表中导出来的表. 1.创建视图 #语法:CREATE VIEW 视图名称 AS SQL语句 create view teac ...