1、离散数学C语言上机题广东工业大学 计算机科学与技术 张法光离散数学C语言上机题 Anyview可视化编程作业系统二元关系章节编程题EX016.01 试设计一算法,实现集合的卡氏积运算。实现下列函数:/* * 进行两个集合的卡氏积运算 * param pA: 要进行卡氏积运算的集合 * param pB: 要进行卡氏积运算的集合 * return: 将pA和pB进行卡氏积运算后得到的集合 */ pCartersianSet CartesianProduct(pOriginalSet pA, pOriginalSet pB) pCartersianSet pC=createNullCartersi
2、anSet(); /空卡for(resetOriginalSet(pA);!isEndOfOriginalSet(pA);nextOriginalSetPos(pA) / 空卡 序偶插入 建立序偶 条件语句 for(resetOriginalSet(pB);!isEndOfOriginalSet(pB);nextOriginalSetPos(pB)OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pB);return
3、pC; 026.02 试设计一算法,给定集合A、集合B和集合C,判断集合C是否为A到B的一个二元关系。实现下列函数:/* * 给定集合A、集合B和集合C,判断集合C是否为A到B的一个二元关系。 * param pA: 集合A * param pB: 集合B * param pC: 集合C * return: 如果集合C是A到B的一个二元关系,则返回true,否则返回false。 */ boolean isBinaryRelation(pOriginalSet pA, pOriginalSet pB, pCartersianSet pC) pCartersianSet pD=createNull
4、CartersianSet();for(resetOriginalSet(pA);!isEndOfOriginalSet(pA);nextOriginalSetPos(pA) / 空卡 序偶插入 建立序偶 条件语句 for(resetOriginalSet(pB);!isEndOfOriginalSet(pB);nextOriginalSetPos(pB)OrderedCoupleInsertToCartersianSet(pD,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pB); fo
5、r(resetCartersianSet(pC);!isEndOfCartersianSet(pC); nextCartersianSetPos(pC) if(isInCartersianSet(pD,getCurrentCartersianSetElem(pC) ;/满足条件,执行空语句,继续循环 else return false; return true; 036.03 试设计一算法,求集合A上的恒等关系。实现下列函数:/* * 给定集合A,求集合A上的恒等关系。 * param pSet: 原始集合 * return: 集合A上的恒等关系。 */ pCartersianSet Iden
6、tityRelation(pOriginalSet pA) pCartersianSet pB=createNullCartersianSet();for(resetOriginalSet(pA);!isEndOfOriginalSet(pA);nextOriginalSetPos(pA) / 空卡 序偶插入 建立序偶 条件语句 for(resetOriginalSet(pA);!isEndOfOriginalSet(pA);nextOriginalSetPos(pA) if(getCurrentOriginalSetElem(pA)=getCurrentOriginalSetElem(pA)
7、/The same elements OrderedCoupleInsertToCartersianSet(pB,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA); return pB;046.04 试设计一算法,求两个卡氏积集合的复合运算。实现下列函数:/* * 给定两个集合,求该两个集合的复合运算。 * param pA: 卡氏积集合 * param pB: 卡氏积集合 * return: pA与pB的复合运算结果。 */ pCartersianSet CompositeOpera
8、tion(pCartersianSet pA, pCartersianSet pB) pCartersianSet pC=createNullCartersianSet(); for(resetCartersianSet(pA);!isEndOfCartersianSet(pA); nextCartersianSetPos(pA) for(resetCartersianSet(pB);!isEndOfCartersianSet(pB); nextCartersianSetPos(pB) if(isEqualOriginalSetElem(getSecondElemOfOrderedCouple
9、(getCurrentCartersianSetElem(pA),getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pB) /获取A卡氏积中序偶的第二元 /获取第二元 OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pA),getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pB) ); ret
10、urn pC; 056.05 试设计一算法,求一个关系的逆运算。实现下列函数:/* * 求一个关系的逆运算。 * param pA: 卡氏积集合 * return: pA的逆运算结果。 */ pCartersianSet InverseOperation(pCartersianSet pA) pCartersianSet pB=createNullCartersianSet(); for(resetCartersianSet(pA);!isEndOfCartersianSet(pA); nextCartersianSetPos(pA) OrderedCoupleInsertToCartersi
11、anSet(pB,createOrderedCouple(getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pA),getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pA) ); return pB;066.06 试设计一算法,对某集合A上的一个二元关系,求该关系的幂运算。实现下列函数:/* * 求一个关系的幂运算。 * param pA: 原始集合 * param pBinaryRelationR: pA上的关系R * param n: 幂运算的次数,且n = 0 *
12、 return: pBinaryRelationSet的n次幂运算结果。 */ pCartersianSet CompositeOperation(pCartersianSet pA, pCartersianSet pB) pCartersianSet pC=createNullCartersianSet(); for(resetCartersianSet(pA);!isEndOfCartersianSet(pA); nextCartersianSetPos(pA) for(resetCartersianSet(pB);!isEndOfCartersianSet(pB); nextCarter
13、sianSetPos(pB) if(isEqualOriginalSetElem(getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pA),getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pB) /获取A卡氏积中序偶的第二元 /获取第二元 OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pA
14、),getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pB) ); return pC; pCartersianSet PowOperation(pOriginalSet pA, pCartersianSet pBinaryRelationR, int n) pCartersianSet pC=createNullCartersianSet(); pC=copyCartersianSet(pBinaryRelationR); if(n=0) for(resetOriginalSet(pA);!isEndOfOriginalSet(
15、pA);nextOriginalSetPos(pA) for(resetOriginalSet(pA);!isEndOfOriginalSet(pA);nextOriginalSetPos(pA) OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA); return pC; if(n=1) return pBinaryRelationR; for(int i=1;in;i+) pC=CompositeOperati
16、on(pC,pBinaryRelationR); return pC; 076.02 试设计一算法,对某集合A上的一个二元关系R,判断R是否具有自反性。实现下列函数:/* * 判断一个关系是否具有自反性。 * param pA: 原始集合 * param pBinaryRelationR: 卡氏积集合,该集合是一个pA上的二元关系 * return: 如果pBinaryRelationSet具有自反性;则返回true,否则返回false。 */ boolean IsReflexivity(pOriginalSet pA, pCartersianSet pBinaryRelationR) pCa
17、rtersianSet pC=createNullCartersianSet(); /获取 IA for(resetOriginalSet(pA);!isEndOfOriginalSet(pA);nextOriginalSetPos(pA) for(resetOriginalSet(pA);!isEndOfOriginalSet(pA);nextOriginalSetPos(pA) OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalS
18、etElem(pA); for(resetCartersianSet(pC);!isEndOfCartersianSet(pC); nextCartersianSetPos(pC) if(isInCartersianSet(pBinaryRelationR,getCurrentCartersianSetElem(pC) ;/满足条件,执行空语句,继续循环 else return false; return true; 086.08 试设计一算法,对某集合A上的一个二元关系R,判断R是否具有反自反性。实现下列函数:/* * 判断一个关系是否具有反自反性。 * param pA: 原始集合 * p
19、aram pBinaryRelationR: 卡氏积集合,该集合是一个pA上的二元关系 * return: 如果pBinaryRelationSet具有反自反性;则返回true,否则返回false。 */ boolean IsAntiReflexivity(pOriginalSet pA, pCartersianSet pBinaryRelationR) pCartersianSet pC=createNullCartersianSet(); /获取 IA for(resetOriginalSet(pA);!isEndOfOriginalSet(pA);nextOriginalSetPos(p
20、A) for(resetOriginalSet(pA);!isEndOfOriginalSet(pA);nextOriginalSetPos(pA) OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA); for(resetCartersianSet(pC);!isEndOfCartersianSet(pC); nextCartersianSetPos(pC) if(!isInCartersianSet(pBina
21、ryRelationR,getCurrentCartersianSetElem(pC) ;/满足条件,执行空语句,继续循环 else return false; return true; 096.09 试设计一算法,对某集合A上的一个二元关系R,判断R是否具有自反性或者反自反性。 在实际运算中,A无需给出。实现下列函数:/* * 判断一个关系是否具有自反性或者反自反性。对一个关系R是否具有自反性或者反自反性, * 有四种可能:是自反的;是反自反的;既是自反的也是反自反的、 * 既不是自反的也不是反自反的。 * param pA: 原始集合 * param pBinaryRelationR: 卡
22、氏积集合,该集合是一个pA上的二元关系 * return: 返回一个Reflexivity_Type枚举类型值。 * 如果pBinaryRelationSet具有自反性,则返回REFLEXIVITY; * 如果pBinaryRelationSet具有反自反性,则返回ANTI_REFLEXIVITY; * 如果pBinaryRelationSet既具有自反性,也具有反自反性,则返回 * REFLEXIVITY_AND_ANTI_REFLEXIVITY; * 如果pBinaryRelationSet既不具有自反性,也不具有反自反性,则返回 * NOT_REFLEXIVITY_AND_NOT_ANT
23、I_REFLEXIVITY; */自反函数boolean IsReflexivity(pOriginalSet pA, pCartersianSet pBinaryRelationR) pCartersianSet pC=createNullCartersianSet(); /获取 IA for(resetOriginalSet(pA);!isEndOfOriginalSet(pA);nextOriginalSetPos(pA) for(resetOriginalSet(pA);!isEndOfOriginalSet(pA);nextOriginalSetPos(pA) OrderedCoup
24、leInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA); for(resetCartersianSet(pC);!isEndOfCartersianSet(pC); nextCartersianSetPos(pC) if(isInCartersianSet(pBinaryRelationR,getCurrentCartersianSetElem(pC) ;/满足条件,执行空语句,继续循环 else return false; return
25、 true;/反自反函数boolean IsAntiReflexivity(pOriginalSet pA, pCartersianSet pBinaryRelationR) pCartersianSet pC=createNullCartersianSet(); /获取 IA for(resetOriginalSet(pA);!isEndOfOriginalSet(pA);nextOriginalSetPos(pA) for(resetOriginalSet(pA);!isEndOfOriginalSet(pA);nextOriginalSetPos(pA) OrderedCoupleIns
26、ertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA); for(resetCartersianSet(pC);!isEndOfCartersianSet(pC); nextCartersianSetPos(pC) if(!isInCartersianSet(pBinaryRelationR,getCurrentCartersianSetElem(pC) ;/满足条件,执行空语句,继续循环 else return false; return tru
27、e; Reflexivity_Type DetermineReflexivity(pOriginalSet pA, pCartersianSet pBinaryRelationR) if(IsReflexivity(pA,pBinaryRelationR)&IsAntiReflexivity(pA,pBinaryRelationR) return REFLEXIVITY_AND_ANTI_REFLEXIVITY; else if(!IsReflexivity(pA,pBinaryRelationR)&!IsAntiReflexivity(pA,pBinaryRelationR) return
28、NOT_REFLEXIVITY_AND_NOT_ANTI_REFLEXIVITY; else if(IsReflexivity(pA,pBinaryRelationR) return REFLEXIVITY; else return ANTI_REFLEXIVITY;106.10 试设计一算法,对某集合A上的一个二元关系R,判断R是否具有对称性或者反对称性。实现下列函数:/* * 判断一个关系是否具有对称性或者反对称性。对一个关系R是否具有对称性或者反对称性, * 有四种可能:是对称的;是反对称的;既是对称的也是反对称的;既不是对称的也不是 * 反对称的。 * param pBinaryRel
29、ationR: 卡氏积集合,该集合是一个pA上的二元关系 * return: 返回一个Symmetry_Type枚举类型值。 * 如果pBinaryRelationSet具有对称性,则返回SYMMETRY; * 如果pBinaryRelationSet具有反对称性,则返回ANTI_SYMMETRY; * 如果pBinaryRelationSet既具有对称性,也具有对称性,则返回* SYMMETRY_AND_ANTI_SYMMETRY; * 如果pBinaryRelationSet既不具有对称性,也不具有反对称性,则返回 * NOT_SYMMETRY_AND_NOT_ANTI_SYMMETRY;
30、 */ Symmetry_Type DetermineSymmetry(pCartersianSet pBinaryRelationR)int a,b,c; a=b=c=0;if(!isNullCartersianSet(pBinaryRelationR)for(resetCartersianSet(pBinaryRelationR);!isEndOfCartersianSet(pBinaryRelationR);nextCartersianSetPos(pBinaryRelationR)if(isInCartersianSet(pBinaryRelationR,createOrderedCouple(getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pBinaryRelatio
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1