离散数学C语言上机题.docx

上传人:b****6 文档编号:5663564 上传时间:2022-12-30 格式:DOCX 页数:28 大小:20.18KB
下载 相关 举报
离散数学C语言上机题.docx_第1页
第1页 / 共28页
离散数学C语言上机题.docx_第2页
第2页 / 共28页
离散数学C语言上机题.docx_第3页
第3页 / 共28页
离散数学C语言上机题.docx_第4页
第4页 / 共28页
离散数学C语言上机题.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

离散数学C语言上机题.docx

《离散数学C语言上机题.docx》由会员分享,可在线阅读,更多相关《离散数学C语言上机题.docx(28页珍藏版)》请在冰豆网上搜索。

离散数学C语言上机题.docx

离散数学C语言上机题

广东工业大学计算机科学与技术张法光

离散数学C语言上机题

Anyview

可视化编程作业系统

二元关系章节编程题

EX

01

6.01③试设计一算法,

实现集合的卡氏积运算。

实现下列函数:

/**

*进行两个集合的卡氏积运算

*@parampA:

要进行卡氏积运算的集合

*@parampB:

要进行卡氏积运算的集合

*@return:

将pA和pB进行卡氏积运算后得到的集合

*/

pCartersianSetCartesianProduct(pOriginalSetpA,pOriginalSetpB)

{

pCartersianSetpC=createNullCartersianSet();//空卡

for(resetOriginalSet(pA);!

isEndOfOriginalSet(pA);nextOriginalSetPos(pA))

{//空卡←序偶插入←建立序偶←条件语句

for(resetOriginalSet(pB);!

isEndOfOriginalSet(pB);nextOriginalSetPos(pB))

OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),g

etCurrentOriginalSetElem(pB)));

}

returnpC;

}

02

6.02②试设计一算法,

给定集合A、集合B和集合C,判断集合C是否为A到B的一个二元关系。

实现下列函数:

/**

*给定集合A、集合B和集合C,判断集合C是否为A到B的一个二元关系。

*@parampA:

集合A

*@parampB:

集合B

*@parampC:

集合C

*@return:

如果集合C是A到B的一个二元关系,则返回true,否则返回false。

*/

booleanisBinaryRelation(pOriginalSetpA,pOriginalSetpB,pCartersianSetpC)

{

pCartersianSetpD=createNullCartersianSet();

for(resetOriginalSet(pA);!

isEndOfOriginalSet(pA);nextOriginalSetPos(pA))

{//空卡←序偶插入←建立序偶←条件语句

for(resetOriginalSet(pB);!

isEndOfOriginalSet(pB);nextOriginalSetPos(pB))

OrderedCoupleInsertToCartersianSet(pD,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pB)));

}

for(resetCartersianSet(pC);!

isEndOfCartersianSet(pC);nextCartersianSetPos(pC))

{

if(isInCartersianSet(pD,getCurrentCartersianSetElem(pC)))

;//满足条件,执行空语句,继续循环

elsereturnfalse;

}

returntrue;

}

03

6.03②试设计一算法,求集合A上的恒等关系。

实现下列函数:

/**

*给定集合A,求集合A上的恒等关系。

*@parampSet:

原始集合

*@return:

集合A上的恒等关系。

*/

pCartersianSetIdentityRelation(pOriginalSetpA)

{pCartersianSetpB=createNullCartersianSet();

for(resetOriginalSet(pA);!

isEndOfOriginalSet(pA);nextOriginalSetPos(pA))

{//空卡←序偶插入←建立序偶←条件语句

for(resetOriginalSet(pA);!

isEndOfOriginalSet(pA);nextOriginalSetPos(pA))

if(getCurrentOriginalSetElem(pA)==getCurrentOriginalSetElem(pA))//Thesameelements

OrderedCoupleInsertToCartersianSet(pB,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA)));

}

returnpB;

}

04

6.04③试设计一算法,求两个卡氏积集合的复合运算。

实现下列函数:

/**

*给定两个集合,求该两个集合的复合运算。

*@parampA:

卡氏积集合

*@parampB:

卡氏积集合

*@return:

pA与pB的复合运算结果。

*/

pCartersianSetCompositeOperation(pCartersianSetpA,pCartersianSetpB)

{pCartersianSetpC=createNullCartersianSet();

for(resetCartersianSet(pA);!

isEndOfCartersianSet(pA);nextCartersianSetPos(pA))

{

for(resetCartersianSet(pB);!

isEndOfCartersianSet(pB);nextCartersianSetPos(pB))

if(isEqualOriginalSetElem(getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pA)),getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pB))))

//获取A卡氏积中序偶的第二元//获取第二元

OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pA)),getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pB))));

}

returnpC;

}

05

6.05②试设计一算法,求一个关系的逆运算。

实现下列函数:

/**

*求一个关系的逆运算。

*@parampA:

卡氏积集合

*@return:

pA的逆运算结果。

*/

pCartersianSetInverseOperation(pCartersianSetpA)

{pCartersianSetpB=createNullCartersianSet();

for(resetCartersianSet(pA);!

isEndOfCartersianSet(pA);nextCartersianSetPos(pA))

{OrderedCoupleInsertToCartersianSet(pB,createOrderedCouple(getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pA)),getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pA))));

}

returnpB;

}

06

6.06④试设计一算法,对某集合A上的一个二元关系,求该关系的幂运算。

实现下列函数:

/**

*求一个关系的幂运算。

*@parampA:

原始集合

*@parampBinaryRelationR:

pA上的关系R

*@paramn:

幂运算的次数,且n>=0

*@return:

pBinaryRelationSet的n次幂运算结果。

*/

pCartersianSetCompositeOperation(pCartersianSetpA,pCartersianSetpB)

{pCartersianSetpC=createNullCartersianSet();

for(resetCartersianSet(pA);!

isEndOfCartersianSet(pA);nextCartersianSetPos(pA))

{

for(resetCartersianSet(pB);!

isEndOfCartersianSet(pB);nextCartersianSetPos(pB))

if(isEqualOriginalSetElem(getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pA)),getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pB))))

//获取A卡氏积中序偶的第二元//获取第二元

OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getFirstElemOfOrderedCouple(getCurrentCartersianSetElem(pA)),getSecondElemOfOrderedCouple(getCurrentCartersianSetElem(pB))));

}

returnpC;

}

pCartersianSetPowOperation(pOriginalSetpA,

pCartersianSetpBinaryRelationR,

intn)

{

pCartersianSetpC=createNullCartersianSet();

pC=copyCartersianSet(pBinaryRelationR);

if(n==0)

{

for(resetOriginalSet(pA);!

isEndOfOriginalSet(pA);nextOriginalSetPos(pA))

{for(resetOriginalSet(pA);!

isEndOfOriginalSet(pA);nextOriginalSetPos(pA))

OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA)));

}

returnpC;

}

if(n==1)

{returnpBinaryRelationR;}

for(inti=1;i

{pC=CompositeOperation(pC,pBinaryRelationR);}

returnpC;

}

07

6.02②试设计一算法,对某集合A上的一个二元关系R,判断R是否具有自反性。

实现下列函数:

/**

*判断一个关系是否具有自反性。

*@parampA:

原始集合

*@parampBinaryRelationR:

卡氏积集合,该集合是一个pA上的二元关系

*@return:

如果pBinaryRelationSet具有自反性;则返回true,否则返回false。

*/

booleanIsReflexivity(pOriginalSetpA,pCartersianSetpBinaryRelationR)

{pCartersianSetpC=createNullCartersianSet();

//获取IA

for(resetOriginalSet(pA);!

isEndOfOriginalSet(pA);nextOriginalSetPos(pA))

{

for(resetOriginalSet(pA);!

isEndOfOriginalSet(pA);nextOriginalSetPos(pA))

OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA)));

}

for(resetCartersianSet(pC);!

isEndOfCartersianSet(pC);nextCartersianSetPos(pC))

{

if(isInCartersianSet(pBinaryRelationR,getCurrentCartersianSetElem(pC)))

;//满足条件,执行空语句,继续循环

elsereturnfalse;

}

returntrue;

}

08

6.08②试设计一算法,对某集合A上的一个二元关系R,判断R是否具有反自反性。

实现下列函数:

/**

*判断一个关系是否具有反自反性。

*@parampA:

原始集合

*@parampBinaryRelationR:

卡氏积集合,该集合是一个pA上的二元关系

*@return:

如果pBinaryRelationSet具有反自反性;则返回true,否则返回false。

*/

booleanIsAntiReflexivity(pOriginalSetpA,pCartersianSetpBinaryRelationR)

{pCartersianSetpC=createNullCartersianSet();

//获取IA

for(resetOriginalSet(pA);!

isEndOfOriginalSet(pA);nextOriginalSetPos(pA))

{

for(resetOriginalSet(pA);!

isEndOfOriginalSet(pA);nextOriginalSetPos(pA))

OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA)));

}

for(resetCartersianSet(pC);!

isEndOfCartersianSet(pC);nextCartersianSetPos(pC))

{

if(!

isInCartersianSet(pBinaryRelationR,getCurrentCartersianSetElem(pC)))

;//满足条件,执行空语句,继续循环

elsereturnfalse;

}

returntrue;

}

09

6.09③试设计一算法,对某集合A上的一个二元关系R,判断R是否具有自反性或者反自反性。

在实际运算中,A无需给出。

实现下列函数:

/**

*判断一个关系是否具有自反性或者反自反性。

对一个关系R是否具有自反性或者反自反性,

*有四种可能:

是自反的;是反自反的;既是自反的也是反自反的、

*既不是自反的也不是反自反的。

*@parampA:

原始集合

*@parampBinaryRelationR:

卡氏积集合,该集合是一个pA上的二元关系

*@return:

返回一个Reflexivity_Type枚举类型值。

*如果pBinaryRelationSet具有自反性,则返回REFLEXIVITY;

*如果pBinaryRelationSet具有反自反性,则返回ANTI_REFLEXIVITY;

*如果pBinaryRelationSet既具有自反性,也具有反自反性,则返回

*REFLEXIVITY_AND_ANTI_REFLEXIVITY;

*如果pBinaryRelationSet既不具有自反性,也不具有反自反性,则返回

*NOT_REFLEXIVITY_AND_NOT_ANTI_REFLEXIVITY;

*/

//自反函数

booleanIsReflexivity(pOriginalSetpA,pCartersianSetpBinaryRelationR)

{pCartersianSetpC=createNullCartersianSet();

//获取IA

for(resetOriginalSet(pA);!

isEndOfOriginalSet(pA);nextOriginalSetPos(pA))

{

for(resetOriginalSet(pA);!

isEndOfOriginalSet(pA);nextOriginalSetPos(pA))

OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA)));

}

for(resetCartersianSet(pC);!

isEndOfCartersianSet(pC);nextCartersianSetPos(pC))

{

if(isInCartersianSet(pBinaryRelationR,getCurrentCartersianSetElem(pC)))

;//满足条件,执行空语句,继续循环

elsereturnfalse;

}

returntrue;

}

//反自反函数

booleanIsAntiReflexivity(pOriginalSetpA,pCartersianSetpBinaryRelationR)

{pCartersianSetpC=createNullCartersianSet();

//获取IA

for(resetOriginalSet(pA);!

isEndOfOriginalSet(pA);nextOriginalSetPos(pA))

{

for(resetOriginalSet(pA);!

isEndOfOriginalSet(pA);nextOriginalSetPos(pA))

OrderedCoupleInsertToCartersianSet(pC,createOrderedCouple(getCurrentOriginalSetElem(pA),getCurrentOriginalSetElem(pA)));

}

for(resetCartersianSet(pC);!

isEndOfCartersianSet(pC);nextCartersianSetPos(pC))

{

if(!

isInCartersianSet(pBinaryRelationR,getCurrentCartersianSetElem(pC)))

;//满足条件,执行空语句,继续循环

elsereturnfalse;

}

returntrue;

}

Reflexivity_TypeDetermineReflexivity(pOriginalSetpA,

pCartersianSetpBinaryRelationR)

{

if(IsReflexivity(pA,pBinaryRelationR)&&IsAntiReflexivity(pA,pBinaryRelationR))

returnREFLEXIVITY_AND_ANTI_REFLEXIVITY;

elseif(!

IsReflexivity(pA,pBinaryRelationR)&&!

IsAntiReflexivity(pA,pBinaryRelationR))

returnNOT_REFLEXIVITY_AND_NOT_ANTI_REFLEXIVITY;

elseif(IsReflexivity(pA,pBinaryRelationR))

returnREFLEXIVITY;

else

returnANTI_REFLEXIVITY;

}

10

6.10④试设计一算法,对某集合A上的一个二元关系R,判断R是否具有对称性或者反对称性。

实现下列函数:

/**

*判断一个关系是否具有对称性或者反对称性。

对一个关系R是否具有对称性或者反对称性,

*有四种可能:

是对称的;是反对称的;;既是对称的也是反对称的;既不是对称的也不是

*反对称的。

*@parampBinaryRelationR:

卡氏积集合,该集合是一个pA上的二元关系

*@return:

返回一个Symmetry_Type枚举类型值。

*如果pBinaryRelationSet具有对称性,则返回SYMMETRY;

*如果pBinaryRelationSet具有反对称性,则返回ANTI_SYMMETRY;

*如果pBinaryRelationSet既具有对称性,也具有对称性,则返回

*SYMMETRY_AND_ANTI_SYMMETRY;

*如果pBinaryRelationSet既不具有对称性,也不具有反对称性,则返回

*NOT_SYMMETRY_AND_NOT_ANTI_SYMMETRY;

*/

Symmetry_TypeDetermineSymmetry(pCartersianSetpBinaryRelationR)

{inta,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