【离散数学】集合上二元关系性质判定的实现(c语言实现)

实验要求

在这里插入图片描述

关系矩阵的初始化和打印

我们将关系矩阵存入一个二维数组中,因为集合元素个数不会超过5个所以就用一个5行5列二维数组来表示。
在我们得到了集合元素个数之后我们就可以对数组进行0,1随机赋值

//初始关系矩阵
void init_matrix(int array[][5], int n)
{for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){array[i][j] = rand() % 2;}}
}//打印矩阵
void print_matrix(int array[][5], int n)
{for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){printf("%d ", array[i][j]);}printf("\n");}
}

验证自反性

自反性的验证就是主对角线上元素是不是全为1。

//验证自反性
void judge_introspect(int array[][5], int n)
{n--;while (n >= 0){if (array[n][n] != 1){printf("不满足自反性,因为第%d行第%d列应该为1\n", n+1, n+1);return;}	n--;}printf("满足自反性\n");
}

验证反自反性

反自反性的验证就是主对角线上元素只要有一个不是1那就满足反自反性。

//验证反自反性
void judge_irreflexive(int array[][5], int n)
{n--;while (n >= 0){if (array[n][n] != 0){printf("不满足反自反性,因为第%d行第%d列应该为0\n", n+1, n+1);return;}n--;}printf("满足反自反性\n");
}

验证对称性

对称性就是关于主对角线对称相等。

//验证对称性
void judge_symmetry(int array[][5], int n)
{for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (array[i][j] != array[j][i]){printf("不满足对称性,因为第%d行第%d列和第%d行第%d列不同时为%d\n", i+1, j+1, j+1, i+1, array[i][j]);return;}}}printf("满足对称性\n");
}

验证反对称性

反对称性就是如果两个元素相等,那么它一定是行列相等的元素。

//验证反对称性
void judge_antisymmetry(int array[][5], int n)
{for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (array[i][j] == array[j][i] && i != j){printf("不满足反对称性,因为第%d行第%d列和第%d行第%d列同时为%d\n", i+1, j+1, j+1, i+1, array[i][j]);return;}}}printf("满足反对称性\n");
}

验证传递性

就是arr[a][b] == 1并且arr[a][c] == 1并且arr[c][b] == 1。我在这用了三个循环来判断,是最笨的方法,如果有好办法请给在评论区分享一下。

//验证传递性
void judge_transfer(int array[][5], int n)
{int flag = 0;for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (array[i][j] == 1 && i !=j){for(int m = 0; m < n; m++){if (array[i][m] == 1 && array[m][j] == 1 && m != i && m != j){printf("满足传递性因为第%d行第%d列为1,第%d行第%d列为1,第%d行第%d列也为1\n", i + 1, m + 1, m + 1, j + 1, i + 1, j + 1);flag++;break;}}}}}if (flag == 0){for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (array[i][j] == 1 && i != j){int m = 0;while (1){m = rand() % n;if (m != i && m != j){break;}}printf("不满足传递性因为第%d行第%d列为%d,第%d行第%d列为%d,第%d行第%d列也为%d\n",i + 1, m + 1,array[i][m], m + 1, j + 1,array[m][j], i + 1, j + 1,array[i][j]);}}}}
}

源码

# define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>
#include<stdlib.h>//初始关系矩阵
void init_matrix(int array[][5], int n)
{for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){array[i][j] = rand() % 2;}}
}//打印矩阵
void print_matrix(int array[][5], int n)
{for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){printf("%d ", array[i][j]);}printf("\n");}
}
//验证自反性
void judge_introspect(int array[][5], int n)
{n--;while (n >= 0){if (array[n][n] != 1){printf("不满足自反性,因为第%d行第%d列应该为1\n", n+1, n+1);return;}	n--;}printf("满足自反性\n");
}
//验证反自反性
void judge_irreflexive(int array[][5], int n)
{n--;while (n >= 0){if (array[n][n] != 0){printf("不满足反自反性,因为第%d行第%d列应该为0\n", n+1, n+1);return;}n--;}printf("满足反自反性\n");
}
//验证对称性
void judge_symmetry(int array[][5], int n)
{for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (array[i][j] != array[j][i]){printf("不满足对称性,因为第%d行第%d列和第%d行第%d列不同时为%d\n", i+1, j+1, j+1, i+1, array[i][j]);return;}}}printf("满足对称性\n");
}
//验证反对称性
void judge_antisymmetry(int array[][5], int n)
{for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (array[i][j] == array[j][i] && i != j){printf("不满足反对称性,因为第%d行第%d列和第%d行第%d列同时为%d\n", i+1, j+1, j+1, i+1, array[i][j]);return;}}}printf("满足反对称性\n");
}
//验证传递性
void judge_transfer(int array[][5], int n)
{int flag = 0;for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (array[i][j] == 1 && i !=j){for(int m = 0; m < n; m++){if (array[i][m] == 1 && array[m][j] == 1 && m != i && m != j){printf("满足传递性因为第%d行第%d列为1,第%d行第%d列为1,第%d行第%d列也为1\n", i + 1, m + 1, m + 1, j + 1, i + 1, j + 1);flag++;break;}}}}}if (flag == 0){for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if (array[i][j] == 1 && i != j){int m = 0;while (1){m = rand() % n;if (m != i && m != j){break;}}printf("不满足传递性因为第%d行第%d列为%d,第%d行第%d列为%d,第%d行第%d列也为%d\n",i + 1, m + 1,array[i][m], m + 1, j + 1,array[m][j], i + 1, j + 1,array[i][j]);}}}}
}
int main()
{srand((unsigned int)time(NULL));//用随机数生成集合数int num = rand() % 5 + 1;int relationMatrix[5][5] = { 0 };//关系矩阵init_matrix(relationMatrix, num);//初始关系矩阵print_matrix(relationMatrix, num);//打印矩阵judge_introspect(relationMatrix, num);//验证自反性judge_irreflexive(relationMatrix, num);//验证反自反性judge_symmetry(relationMatrix, num);//验证对称性judge_antisymmetry(relationMatrix, num);//验证反对称性judge_transfer(relationMatrix, num);//验证传递性return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/8696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多核DSP并行计算跨平台通信解决方案

并行计算的核心是计算节点以及节点间的通信与协调机制。OpenMP虽然给开发者提供了极易上手的增量式开发方式&#xff0c;但是OpenMP在与复杂架构的MCSDK结合后&#xff0c;工具与代码产生了大量不可调试的黑盒子&#xff0c;更是决定了它不能用于关键任务领域&#xff0c;如军工…

算法学习Day2——单调栈习题

第一题&#xff0c;合并球 题解&#xff1a;一开始写了一次暴力双循环&#xff0c;直接O(n^2)严重超时&#xff0c;后面于是又想到了O(n)时间复杂度的链表&#xff0c;但是还是卡在 最后一个数据会TLE&#xff0c;我也是高兴的拍起来安塞腰鼓和华氏护肤水&#xff0c;后面学长给…

基于模糊控制的AMT自动变速汽车换档智能控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于模糊控制的AMT自动变速汽车换档智能控制系统simulink建模与仿真。 2.系统仿真结果 输入的V&#xff0c;Ac&#xff0c;a 输出的档位&#xff1a; 3.核心程序与模型 版…

【C语言】static关键字用法

目录 一、static修饰局部变量 二、static修饰全局变量 三、static修饰函数 一、static修饰局部变量 首先我们来看两段代码: 代码1&#xff08;不加static&#xff09; #include <stdio.h> void test() {int i 0;i;printf("%d ", i); } int main() {int i…

VMvare如何更改虚拟机内共享文件夹的挂载点

更改虚拟机内共享文件夹的路径 进入目录 /etc/init.d ,并找到vmware-tools文件 里面有配置项 vmhgfs_mnt"/mnt/hgfs" 将引号内的内容更改为你需要挂载的路径,重启即可 注意挂载的路径不能是 “/”&#xff0c;必须根目录下的某个文件夹&#xff0c;或者其子文件夹 …

使用Docker安装Yapi接口管理工具

简介&#xff1a; YAPI 是由去哪儿网移动架构组开发的一款可视化接口管理工具。它具有可视化管理、高效易用、功能强大等特点。它提供了便捷的接口创建、发布和维护方式&#xff0c;开发人员可以通过简单的操作实现接口管理。 YAPI 还支持类似 postman 的接口调试&#xff0c;对…

GPU通用计算介绍

谈到 GPU &#xff08;Graphics Processing Unit&#xff0c;图形显示卡&#xff09;大多数人想到的是游戏、图形渲染等这些词汇&#xff0c;图形处理确实是 GPU 的一大应用场景。然而人们也早已关注到它在通用计算上的巨大潜力&#xff0c;并提出了 GPGPU (General-purpose co…

Android进阶之路 - 静态会员进度条

年后这个新版本加入了VIP模块&#xff0c;有幸正好由我来负责&#xff0c;可以再积累一下这方面的知识。 那段时间看了一本书&#xff0c;书中说到初级码农的特性之一就是完全集中于某些功能&#xff0c;忽略了了很多成长机会&#xff0c;所以重复性劳作带来的成长值有限&#…

ETL工具中JSON格式的转换方式

JSON的用处 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;其设计初衷是为了提升网络应用中数据的传输效率及简化数据结构的解析过程。自其诞生以来&#xff0c;JSON 已成为Web开发乃至众多软件开发领域中不可或缺的一部分&a…

神经网络案例实战

&#x1f50e;我们通过一个案例详细使用PyTorch实战 &#xff0c;案例背景&#xff1a;你创办了一家手机公司&#xff0c;不知道如何估算手机产品的价格。为了解决这个问题&#xff0c;收集了多家公司的手机销售数据&#xff1a;这些数据维度可以包括RAM、存储容量、屏幕尺寸、…

# 光标变为下划线怎么办?

光标变为下划线怎么办&#xff1f; 光标变为下划线通常表示您处于覆盖模式。在这种模式下&#xff0c;您键入的任何内容都将覆盖光标位置处的文本。如果想要恢复光标为正常显示&#xff0c;您可以尝试以下方法&#xff1a; 1、在桌面或文档编辑界面&#xff0c;按键盘上的 【I…

Object类

Object类 概念&#xff1a;Object类是所有类的父类&#xff0c;也就是说任何一个类在定义时候如果没有明确的指定继承一个父类的话&#xff0c;那么它就都默认继承Object类&#xff0c;因此Object类被称为所有类的父类&#xff0c;也叫做基类/超类。 常用方法 方法类型描述eq…

每日OJ题_记忆化搜索①_力扣509. 斐波那契数(四种解法)

目录 记忆化搜索概念和使用场景 力扣509. 斐波那契数 解析代码1_循环 解析代码2_暴搜递归 解析代码3_记忆化搜索 解析代码4_动态规划 记忆化搜索概念和使用场景 记忆化搜索是一种典型的空间换时间的思想&#xff0c;可以看成带备忘录的爆搜递归。 搜索的低效在于没有能够…

《手把手教你怎么上手做一个小程序》

准备工作&#xff1a; 硬件准备&#xff1a; 装有微信的手机一台。 账号注册&#xff1a; 进入https://mp.weixin.qq.com/cgi-bin/registermidpage?actionindex&langzh_CN&token注册一个微信小程序账号。 然后输入邮箱注册账号。一个邮箱只能注册一个微信公众平台…

【面试经典 150 | 数组】找出字符串中第一个匹配项的下标

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;find方法二&#xff1a;暴力匹配方法三&#xff1a;KMP 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;…

算法学习006-瓷砖总数 广度优先算法BFS 中小学算法思维学习 信奥算法解析 c++实现

目录 C瓷砖总数 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、推荐资料 C瓷砖总数 一、题目要求 1、编程实现 在一个长方形房间&#xff0c;铺着不同颜色的的瓷砖&#xff0c;有红色和黑色&#…

AR人脸道具SDK解决方案,实现道具与人脸的自然融合

AR人脸道具SDK解决方案&#xff0c;实现道具与人脸的自然融合美摄科技以其卓越的技术实力和创新能力&#xff0c;为企业带来了全新的AR人脸道具SDK解决方案。这一解决方案将为企业打开全新的市场机会&#xff0c;为用户带来前所未有的互动体验。 颠覆传统&#xff0c;开启AR人…

AI预测福彩3D第10套算法实战化赚米验证第1弹2024年5月5日第1次测试

从今天开始&#xff0c;准备启用第10套算法&#xff0c;来验证下本算法的可行性。因为本算法通过近三十期的内测&#xff08;内测版没有公开预测结果&#xff09;&#xff0c;发现本算法的预测结果优于其他所有算法的效果。彩票预测只有实战才能检验是否有效&#xff0c;只有真…

产业项目招商活动会议课程报名签到h5小程序pc开源版开发

产业项目招商活动会议课程报名签到h5小程序pc开源版开发 一个集PC和移动端功能于一体的解决方案&#xff0c;线上线下进行服务&#xff0c;围绕 活动报名、在线课程、项目大厅、线下签到、会员系统等。为商会提供了更加便捷高效的管理方式&#xff0c;提升了商会活动和项目的组…

qt day 3

优化登录框&#xff0c;点击登录按钮&#xff0c;如果账号和密码匹配&#xff0c;则弹出 信息对话框 给出提示信息“登录成功”&#xff0c;并给出一个 ok 按钮&#xff0c;当用户点击 ok 后&#xff0c;关闭当前界面&#xff0c;跳转到另一个界面&#xff1b;如果账号和密码不…