离散数学关系性质的C++或C语言判断实验报告

更新时间:2023-03-18 04:29:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.【实验目的】

对称:

通过算法设计并编程实现对给定集合上的关系是否为对称关系的判断,加深学生对关系性质的理解,掌握用矩阵来判断关系性质的方法

自反:

通过算法设计并编程实现对给定集合上的关系是否为自反关系的判断,加深学生对关系性质的理解,掌握用矩阵来判断关系性质的方法。 2.【实验内容】

已知关系R由关系矩阵M给出,要求判断由M表示的这个关系是否为对称关

?1??2系。假定R的关系矩阵为:M??3??4?234??103? ?012?321??3.【实验要求】

C语言编程实现

4.【算法描述】

对称:

从给定的关系矩阵来判断关系R是否为对称是很容易的。若M(R的关系矩阵)为对称矩阵,则R是对称关系;若M为反对称矩阵,则R是反对称关系。因为R为对称的是等价关系的必要条件,所以,本算法可以作为判等价关系算法的子程序给出。

算法实现:

(1) 输入关系矩阵M(M为n阶方阵);

(2) 判断对称性,对于i=2,3,….,n;j=1,2,……,i-1,若存在mij=mji,

则R是对称的; (3) 判断反对称性;

(4) 判断既是对称的又是反对称的; (5) 判断既不是对称的又不是反对称的; (6) 输出判断结果。

自反:

从给定的关系矩阵来断判关系R是否为自反是很容易的。若M(R的关系矩阵)的主对角线元素均为1,则R是自反关系;若M(R的关系矩阵)的主对角线元素均为0,则R是反自反关系;若M(R的关系矩阵)的主对角线元素既有1又有0,则R既不是自反关系也不是反自反关系。本算法可以作为判等价关系算法的子程序给出。

算法实现

(1) 输入关系矩阵M(M为n阶方阵)。

(2) 判断自反性,对于i=1,2,….,n;若存在mii=0,则R不是自反

的;若存在mii=1,则R是自反的;否则R既不是自反关系也不是反自反关系。

(3) 输出判断结果。

源代码

#include void z(); void r(); void main() {

int d; while(d) {

printf(\欢迎使用关系性质的判断系统\\n\\n 1. 对称关系的判断 2. 自反关系的判

断\\n\\n请输入选项:\

scanf(\switch(d){ case 1: r();break; case 2: z();break; case 0: break; }

}

printf(\

printf(\是否还继续? 是请输入1,否请输入0:\scanf(\printf(\

}return 0;

void r() {

int a[30][30]; int m,n,i,j,c,b,d; c=0; d=0; b=0; d=1;

printf(\请输入矩阵的行数\

scanf(\

printf(\请输入矩阵的列数\scanf(\for(i=0;i

printf(\关系矩阵M为:\\n\for(i=0;i

for(j=0;j

printf(\请输入矩阵关系中第%d行第%d列的数字:\scanf(\

}

printf(\

printf(\

for(i=0;i

for(i=0;i

if(c==2) printf(\该矩阵是对称性的\\n\else

if(c==0) printf(\该矩阵是既对称又反对称的\\n\for(j=0;j

if(a[i][j]==1){ }

if(a[j][i]!=0){ }

c=2; break;

for(j=0;j

if(a[i][j]!=a[j][i]) { }

c=1; break;

} else

if(c==1){ }}

for(i=0;i

if(c==2) printf(\该矩阵不是对称的又不是反对称的\\n\else{ }

printf(\该矩阵是反对称性的\\n\for(j=0;j

if(a[i][j]==1){ }

if(a[j][i]!=0){ }

c=2; break;

void z() {

int m,n,i,j,a[80][80],c; c=0;

printf(\请输入矩阵的行数\scanf(\

printf(\请输入矩阵的列数\scanf(\for(i=0;i

for(j=0;j

printf(\请输入矩阵关系中第%d行第%d列的数字:\scanf(\

本文来源:https://www.bwwdw.com/article/lavf.html

Top