集合上二元關(guān)系性質(zhì)判斷的實(shí)現(xiàn)_第1頁
集合上二元關(guān)系性質(zhì)判斷的實(shí)現(xiàn)_第2頁
集合上二元關(guān)系性質(zhì)判斷的實(shí)現(xiàn)_第3頁
集合上二元關(guān)系性質(zhì)判斷的實(shí)現(xiàn)_第4頁
集合上二元關(guān)系性質(zhì)判斷的實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、實(shí) 驗 報 告( / 學(xué)年 第 一 學(xué)期)課程名稱離散數(shù)學(xué)實(shí)驗名稱集合上二元關(guān)系性質(zhì)判斷的實(shí)現(xiàn)實(shí)驗時間年月日指導(dǎo)單位指導(dǎo)教師學(xué)生姓名班級學(xué)號學(xué)院(系)專 業(yè) PAGE 22實(shí) 驗 報 告實(shí)驗名稱集合上二元關(guān)系性質(zhì)判斷的實(shí)現(xiàn)指導(dǎo)教師實(shí)驗類型上機(jī)實(shí)驗實(shí)驗學(xué)時4實(shí)驗時間實(shí)驗?zāi)康暮鸵竽苷_判定任意二元關(guān)系的自反性、對稱性、傳遞性、反自反性和反對稱性。二、實(shí)驗環(huán)境(實(shí)驗設(shè)備)硬件:PC機(jī)。軟件:Code:Blocks (C+ )三、實(shí)驗原理及內(nèi)容 內(nèi)容:首先輸入要求二元關(guān)系的集合所對應(yīng)的全集中的元素個數(shù)以及各個元素,屏幕輸出該全集以便使用者觀看,然后輸入要求二元關(guān)系的集合中的各個元素,程序調(diào)用判斷各個

2、關(guān)系的函數(shù),最后在屏幕輸出是否具有各個二元關(guān)系,并且詢問是否繼續(xù)使用,若繼續(xù)使用則重復(fù)進(jìn)行上述過程。 原理:建立一個元素類,用來保存元素,根據(jù)各個二元關(guān)系的定義構(gòu)造判斷的函數(shù),在主函數(shù)中建立一個字符數(shù)組保存全集,建立一個對象數(shù)組保存要求二元關(guān)系的集合調(diào)用判斷的函數(shù)并輸出。 程序:#include #include using namespace std;class elementprivate: string left; string right;public: element(); element(string a,string b); element() ; string Getleft(

3、); string Getright();element:element() left=; right=;element:element(string a,string b) left=a; right=b;string element:Getleft() return left;string element:Getright() return right;bool Zifan_or_not(string a,int m,element c,int n)/自反性的判斷 int i,j; for(i=0;im;i+) for(j=0;jn;j+) if(cj.Getleft()=ai&cj.Ge

4、tright()=ai) break; else continue; if(j=n) return false; return true;bool Duichen_or_not(element c,int n)/對稱性的判斷 int i,j; for(i=0;in;i+) for(j=0;jn;j+) if(cj.Getleft()=ci.Getright()&cj.Getright()=ci.Getleft() break; else continue; if(j=n) return false; return true;bool Chuandi_or_not(element c,int n

5、)/傳遞性的判斷 int i,j,k; for(i=0;in;i+) for(j=0;jn;j+) if(i=j) continue; else if(cj.Getleft()=ci.Getright() for(k=0;kn;k+) if(ck.Getleft()=ci.Getleft()&ck.Getright()=cj.Getright() break; else continue; if(k=n) return false; else continue; return true;bool Fanzifan_or_not(string a,int m,element c,int n)/反

6、自反性的判斷 int i,j; for(i=0;im;i+) for(j=0;jn;j+) if(cj.Getleft()=ai)&(cj.Getright()=ai) return false; return true;bool Fanduichen_or_not(element c,int n)/反對稱性的判斷 int i,j; for(i=0;in;i+) for(j=0;jn;j+) if(cj.Getleft()=ci.Getright()&cj.Getright()=ci.Getleft() if(i=j) break; else return false; else contin

7、ue; return true;int main() int flag=1; while(flag=1) system(cls); cout歡迎使用集合上的二元關(guān)系性質(zhì)判斷的工具!endlendl; int number_1; coutnumber_1; string *all=new stringnumber_1; cout請輸入全集中的各個元素:; for(int i=0;ialli; cout你輸入的全集為:; for(int i=0;inumber_1;i+) coutalli; if(i!=number_1-1) cout,; coutendl; int number_2; cout

8、endlnumber_2; element *collection=new elementnumber_2; cout請輸入要求二元關(guān)系的集合中的每個元素:endlendl; for(int i=0;iab; collectioni=element(a,b); coutendl你輸入的集合為:; for(int i=0;inumber_2;i+) coutcollectioni.Getleft(),collectioni.Getright(); if(i!=number_2-1) cout,; coutendl; cout自反性:; if(Zifan_or_not(all,number_1,c

9、ollection,number_2) coutYesendl; else coutNoendl; cout反自反性:; if(Fanzifan_or_not(all,number_1,collection,number_2) coutYesendl; else coutNoendl; cout對稱性:; if(Duichen_or_not(collection,number_2) coutYesendl; else coutNoendl; cout反對稱性:; if(Fanduichen_or_not(collection,number_2) coutYesendl; else coutNo

10、endl; cout傳遞性:; if(Chuandi_or_not(collection,number_2) coutYesendl; else coutNoendl; coutendlflag; return 0;流程圖:開始輸入全集中元素的個數(shù)輸入全集中的各個元素輸出全集輸入要求關(guān)系的集合中元素個數(shù)輸入要求關(guān)系的集合中各個元素輸出要求二元關(guān)系的集合判斷是否具有各個二元關(guān)系并輸出Y是否繼續(xù)使用(Y/N) N退出程序舉例使用:全集為整數(shù):2、全集為整數(shù)和字母的混合:四、實(shí)驗小結(jié)(包括問題和解決方法、心得體會、意見與建議等) 剛做這個實(shí)驗的時候,我有兩個思路,一個是用二維數(shù)組保存集合中的每個元素,判斷性質(zhì)時采用列出關(guān)系矩陣的方式來判斷,另一個是建立一個元素類,用對象數(shù)組保存每個元素,判斷的時候直接調(diào)用對象利用定義直接判斷。考慮到對象調(diào)用的靈活性以及可以靈活地設(shè)置成員函數(shù),使用后者判斷二元關(guān)系時只需要幾個循環(huán)即可,最終我選擇了第二套方案。在編寫程序的過程中,判斷自反性、反自反性、對稱性、反對稱性的函數(shù)都比較簡單,但是判斷傳遞性的函數(shù)需要三個循環(huán)卻不簡單,但在我不斷理清邏輯調(diào)整代碼之后,終于讓這個函數(shù)既簡便又正確了。剛完成時程序只支持全集為整數(shù),為了使程序的應(yīng)用性更廣,我便做了相關(guān)調(diào)整,使得程序也可支持全集字母以及字母和數(shù)字混合的形式。這次

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論