




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、離散數(shù)學(xué)實(shí)驗(yàn)報告專業(yè)班級: 姓名: 學(xué)號: 實(shí)驗(yàn)成績:1【實(shí)驗(yàn)題目】集合運(yùn)算2【實(shí)驗(yàn)?zāi)康摹烤幊虒?shí)現(xiàn)集合的交、并、差和補(bǔ)運(yùn)算。3【實(shí)驗(yàn)內(nèi)容】從鍵盤輸入兩個命題變元p和q的真值,求它們的合取、析取、條件和雙條件的真值。4. 【實(shí)驗(yàn)要求】通過以下界面提示實(shí)現(xiàn)相應(yīng)的集合運(yùn)算*請分別輸入集合a與集合b的元素:請選擇(15)要進(jìn)行的集合運(yùn)算:1. 集合的交運(yùn)算(aÇb)2. 集合的并運(yùn)算(aÈb)3. 集合的差運(yùn)算(a-b)4. 集合的補(bǔ)運(yùn)算(a=e-a)5. 繼續(xù)/退出(y/n)*5. 【算法描述】(1)用數(shù)組a,b,c,e表示集合。假定a=1,3,4,5,6,7,9,10,b=2,
2、,3,4,7,8,10, e=1,2,3,4,5,6,7,8,9,10,輸入數(shù)組a,b,e(全集),輸入數(shù)據(jù)時要求檢查數(shù)據(jù)是否重復(fù)(集合中的數(shù)據(jù)要求不重復(fù)),要求集合a,b是集合e的子集。以下每一個運(yùn)算都要求先將集合c置成空集。(2)二個集合的交運(yùn)算:aÇb=x|xÎa且xÎb把數(shù)組a中元素逐一與數(shù)組b中的元素進(jìn)行比較,將相同的元素放在數(shù)組c中,數(shù)組c便是集合a和集合b的交。c語言算法:for(i=0;i<m;i+)for(j=0;j<n;j+)if(ai= =bj) ck+=ai;(3)二個集合的并運(yùn)算:aÈb=x|xÎa或x
3、206;b把數(shù)組a中各個元素先保存在數(shù)組c中。將數(shù)組b中的元素逐一與數(shù)組b中的元素進(jìn)行比較,把不相同的元素添加到數(shù)組c中,數(shù)組c便是集合a和集合b的并。c語言算法:for(i=0;i<m;i+)ci=ai;for(i=0;i<n;i+)for(j=0;j<m;j+)if(bi= =cj) break;if(j= =m) cm+k=bi;k+;(4)二個集合的差運(yùn)算:a-b=x|xÎa且xÏb將數(shù)組a中的元素逐一與數(shù)組b中的元素進(jìn)行比較,把數(shù)組a與數(shù)組b不同的元素保存在數(shù)組c中,數(shù)組c便是集合a和集合b的差a-b。c語言算法:for (j=0;j<m;
4、j+)for (i=0;i<n;i+)if (aj= =bi)ck=aj;k+;break;if (j= =n) ck=ai; k+;(5)集合的補(bǔ)運(yùn)算: a=e-a=x|xÎe且xÏa將數(shù)組e中的元素逐一與數(shù)組a中的元素進(jìn)行比較,把不相同的元素保存到數(shù)組c中,數(shù)組c便是集合a關(guān)于集合e的補(bǔ)集。求補(bǔ)集是一種特殊的集合差運(yùn)算。c語言算法:k=0;for (i=0;i<m;i+)for (j=0;j<n;j+)if (ei= =aj)break; if (j= =n)ck=ei; k+;6. 【源程序(帶注釋)】#include <iostream>
5、;#include <stdlib.h>#include <string.h>using namespace std;void out() /打印星號的子函數(shù) cout<<"*n"int main() for(;) int a100,b100,c100,e100,jj100,bj100,cha100,bu100;/定義數(shù)組abce,以及jj,bj,cha,bu保存四種運(yùn)算的數(shù)組 int sizea,sizeb,sizec,sizee,sizejj,sizebj,sizecha,sizebu,i=0,j=0,t,x,p=0,k=0,ri=0
6、,time=0,p1=0,p2=0;/定義數(shù)組長度,以及控制變量 char w30; /用于判斷字符串是否相等時使用 char y30;/用于判斷字符串是否相等時使用 char str100;/用于臨時接收輸入進(jìn)的數(shù)組 char *v;/指針,用于拆散字符串使用 out(); cout<<"t請選擇(1-5)要進(jìn)行的集合運(yùn)算:"<<endl <<"t1.集合的交運(yùn)算(ab)"<<endl <<"t2.集合的并運(yùn)算(ab)"<<endl <<"
7、t3.集合的差運(yùn)算(a-b)"<<endl <<"t4.集合的補(bǔ)運(yùn)算(a=e-a)"<<endl <<"t5.繼續(xù)/退出(y/n)"<<endl; out(); for(;) for(;) cout<<"請輸入(1-5)要進(jìn)行的集合運(yùn)算:" gets(w); if(strcmp(w,"1")=0) x=1;break;/strcmp 用于判斷字符串是否相等,相等時則把x賦對應(yīng)的值,否則提示出錯 else if(strcmp(w,&qu
8、ot;2")=0) x=2;break; else if(strcmp(w,"3")=0) x=3;break; else if(strcmp(w,"4")=0) x=4;break; else if(strcmp(w,"5")=0) x=5;break; else cout<<"提示:輸入有誤!n"fflush(stdin); switch(x)/使用switch函數(shù)提示不同功能 case 1:out();cout<<"您要進(jìn)行集合的交運(yùn)算"<<e
9、ndl;out();break; case 2:out();cout<<"您要進(jìn)行集合的并運(yùn)算"<<endl;out();break; case 3:out();cout<<"您要進(jìn)行集合的差運(yùn)算"<<endl;out();break; case 4:out();cout<<"您要進(jìn)行集合的補(bǔ)運(yùn)算"<<endl;out();break; case 5: cout<<"繼續(xù)/退出(y/n):" gets(y); if(strcmp(y
10、,"y")=0) continue; else if(strcmp(y,"n")=0) exit(1); default:cout<<"輸入錯誤,請重新輸入!n"fflush(stdin); if(x>0 && x<5) break; cout<<"請輸入集合a中的元素:n按回車結(jié)束輸入(元素用逗號隔開)a="for(;) gets(str); if(str0=0) sizea=0;p1=1;break;/若接收進(jìn)來的字符串第一個字符asc ii碼為0(null)
11、,跳出循環(huán) for(;) t=1; for(i=0;i<strlen(str);i+) if(stri!=',') if(stri<'0' | stri>'9')/判斷除逗號和數(shù)字以外是否還有其他字符 printf("輸入的只能為數(shù)字!請重新輸入(元素用逗號隔開)a="); gets(str); t=0; break; if (t=1) break; v=strtok(str, ",");/以逗號拆分字符串 a0=atoi(v);/將拆分的第一份字符串利用atoi函數(shù),把整型數(shù)字賦值給a0
12、 i=1; while (v=strtok(null, ",")/繼續(xù)拆分字符串,直到字符串結(jié)尾 ai=atoi(v);i+;/把拆分的字符串變?yōu)檎蛿?shù)組,賦值給ai sizea=i; for(j=0;j<sizea-1;j+)/給a數(shù)組進(jìn)行排序 for(i=0;i<sizea-1-j;i+) if(ai>ai+1) t=ai; ai=ai+1; ai+1=t; t=1; for (i=0;i<sizea-1;i+) if(ai=ai+1) cout<<"提示:數(shù)字重復(fù)!請重新輸入a數(shù)組的元素"<<endl
13、<<"a=" t=0; break; if(t=1) break; out(); cout<<"a數(shù)組為: " for(i=0;i<sizea;i+) cout<<ai<<" " cout<<""<<endl; out();cout<<"請輸入集合b中的元素:n按回車結(jié)束輸入(元素用逗號隔開)b="for(;) gets(str); if(str0=0) sizeb=0;p2=1;break;/若接收進(jìn)來的
14、字符串第一個字符asc ii碼為0(null),跳出循環(huán) for(;) t=1; for(i=0;i<strlen(str);i+) if(stri!=',') if(stri<'0' | stri>'9') printf("輸入的只能為數(shù)字!請重新輸入(元素用逗號隔開)b="); gets(str); t=0; break; if (t=1) break; v=strtok(str, ","); b0=atoi(v); i=1; while (v=strtok(null, ",
15、") bi=atoi(v);i+; sizeb=i; for(j=0;j<sizeb-1;j+) for(i=0;i<sizeb-1-j;i+) if(bi>bi+1) t=bi; bi=bi+1; bi+1=t; t=1; for (i=0;i<sizeb-1;i+) if(bi=bi+1) cout<<"提示:數(shù)字重復(fù)!請重新輸入b數(shù)組的元素"<<endl<<"b=" t=0; break; if(t=1) break; out(); cout<<"b數(shù)組為:
16、 " for(i=0;i<sizeb;i+) cout<<bi<<" " cout<<""<<endl; out();/給a,b做并集c for(i=0;i<sizea;i+) ci=ai; for(j=0;j<sizeb;j+) for(i=0;i<sizea;i+)if(ci=bj)p=1; if(p!=1)csizea+k=bj;k+; p=0;sizec=sizea+k; for(j=0;j<sizec-1;j+) for(i=0;i<sizec-1-j
17、;i+) if(ci>ci+1) t=ci; ci=ci+1; ci+1=t; /并集c里的內(nèi)容放進(jìn)bj數(shù)組 for(i=0;i<sizec;i+) bji=ci; sizebj=sizec;/給a、b做交集,結(jié)果放進(jìn)jjk=0;for(i=0;i<sizea;i+)for(j=0;j<sizeb;j+)if(ai=bj)jjk=ai;k+;sizejj=k;/給a、b做差集 k=0;for(i=0;i<sizea;i+) for(j=0;j<sizeb;j+) if(ai=bj)break;if(j=sizeb)chak=ai;k+; sizecha=k;
18、cout<<"請輸入全集e中的元素:n按回車結(jié)束輸入(元素用逗號隔開)e=" for(;) gets(str); if (p1=1 && p2=1)/若接收進(jìn)來的字符串第一個字符asc ii碼為0(null),判斷a數(shù)組和b數(shù)組是否都為空 sizee=0; break; for(;) t=1; for(i=0;i<strlen(str);i+) if(stri!=',') if(stri<'0' | stri>'9') printf("輸入的只能為數(shù)字!請重新輸入(元素用
19、逗號隔開)e="); gets(str); t=0; break; if (t=1) break; v=strtok(str, ","); e0=atoi(v); i=1; while (v=strtok(null, ",") ei=atoi(v);i+; sizee=i; for(j=0;j<sizee-1;j+) for(i=0;i<sizee-1-j;i+) if(ei>ei+1) t=ei; ei=ei+1; ei+1=t; t=1; for (i=0;i<sizee-1;i+) if(ei=ei+1) cout
20、<<"提示:數(shù)字重復(fù)!請重新輸入e數(shù)組的元素"<<endl<<"e=" t=0; break; if(t=1) for(i=0;i<sizebj;i+) t=0; for(j=0;j<sizee;j+) if(bji=ej) t=1; if(t=0) cout<<"提示:全集e沒有真包含集合a和集合b!n請重新輸入e數(shù)組的元素"<<endl<<"e=" break; if(t=1) break; out(); cout<<
21、;"全集e數(shù)組為: " for(i=0;i<sizee;i+) cout<<ei<<" " cout<<""<<endl; /給a做補(bǔ)集 k=0; for (i=0;i<sizee;i+) for (j=0;j<sizea;j+) if (ei=aj) break; if (j=sizea) buk=ei; k+; sizebu=k; if(x=1) /根據(jù)用戶剛開始輸入的想進(jìn)行的運(yùn)算,輸出對應(yīng)結(jié)果 out(); cout<<"a、b集合的交運(yùn)算結(jié)
22、果如下:"<<endl; cout<<"a= " for(i=0;i<sizea;i+) cout<<ai<<" " cout<<""<<endl; cout<<"b= " for(i=0;i<sizeb;i+) cout<<bi<<" " cout<<""<<endl; cout<<"ab= &quo
23、t; for(i=0;i<sizejj;i+) cout<<jji<<" " cout<<""<<endl; time+; else if(x=2) out(); cout<<"a、b集合的并運(yùn)算結(jié)果如下:"<<endl; cout<<"a= " for(i=0;i<sizea;i+) cout<<ai<<" " cout<<""<<
24、endl; cout<<"b= " for(i=0;i<sizeb;i+) cout<<bi<<" " cout<<""<<endl; cout<<"ab= " for(i=0;i<sizebj;i+) cout<<bji<<" " cout<<""<<endl; time+; else if(x=3) out(); cout<<&q
25、uot;a、b集合的差運(yùn)算結(jié)果如下:"<<endl; cout<<"a= " for(i=0;i<sizea;i+) cout<<ai<<" " cout<<""<<endl; cout<<"b= " for(i=0;i<sizeb;i+) cout<<bi<<" " cout<<""<<endl; cout<<
26、"a-b= " for(i=0;i<sizecha;i+) cout<<chai<<" " cout<<""<<endl; time+; else if(x=4) out(); cout<<"a、e集合的補(bǔ)運(yùn)算結(jié)果如下:"<<endl; cout<<"a= " for(i=0;i<sizea;i+) cout<<ai<<" " cout<<&qu
27、ot;"<<endl; cout<<"b= " for(i=0;i<sizeb;i+) cout<<bi<<" " cout<<""<<endl; cout<<"全集e= " for(i=0;i<sizee;i+) cout<<ei<<" " cout<<""<<endl; cout<<"a=e-a &
28、quot; for(i=0;i<sizebu;i+) cout<<bui<<" " cout<<""<<endl; time+; while(time>0) if(time=0) break; out(); system("pause"); cout<<"t您還可以繼續(xù)進(jìn)行以下運(yùn)算:"<<endl /當(dāng)計(jì)算已經(jīng)進(jìn)行了一次之后,可繼續(xù)進(jìn)行運(yùn)算 <<"t1.交運(yùn)算(ab)"<<endl <
29、;<"t2.并運(yùn)算(ab)"<<endl <<"t3.差運(yùn)算(a-b)"<<endl <<"t4.補(bǔ)運(yùn)算(a=e-a)"<<endl <<"t5.繼續(xù)/退出(y/n)"<<endl<<endl; for(;) cout<<"請輸入(1-5)要進(jìn)行的集合運(yùn)算n重新運(yùn)算請選擇5選項(xiàng)的“繼續(xù)”:" fflush(stdin); gets(w); if(strcmp(w,"1&qu
30、ot;)=0) x=1;break; else if(strcmp(w,"2")=0) x=2;break; else if(strcmp(w,"3")=0) x=3;break; else if(strcmp(w,"4")=0) x=4;break; else if(strcmp(w,"5")=0) x=5;break; else cout<<"提示:輸入有誤!n" switch(x) case 1: out(); cout<<"a、b集合的交運(yùn)算結(jié)果如下:&
31、quot;<<endl; cout<<"a= " for(i=0;i<sizea;i+) cout<<ai<<" " cout<<""<<endl; cout<<"b= " for(i=0;i<sizeb;i+) cout<<bi<<" " cout<<""<<endl; cout<<"ab= " fo
32、r(i=0;i<sizejj;i+) cout<<jji<<" " cout<<""<<endl; time+; break; case 2: out(); cout<<"a、b集合的并運(yùn)算結(jié)果如下:"<<endl; cout<<"a= " for(i=0;i<sizea;i+) cout<<ai<<" " cout<<""<<end
33、l; cout<<"b= " for(i=0;i<sizeb;i+) cout<<bi<<" " cout<<""<<endl; cout<<"ab= " for(i=0;i<sizebj;i+) cout<<bji<<" " cout<<""<<endl; time+; break; case 3: out(); cout<<&qu
34、ot;a、b集合的差運(yùn)算結(jié)果如下:"<<endl; cout<<"a= " for(i=0;i<sizea;i+) cout<<ai<<" " cout<<""<<endl; cout<<"b= " for(i=0;i<sizeb;i+) cout<<bi<<" " cout<<""<<endl; cout<<"a-b= " for(i=0;i<sizecha;i+) cout<<chai<<" " cout<<""<<endl; time+; break; case 4: o
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度大數(shù)據(jù)處理履行合同安全保密協(xié)議
- 二零二五年度電子商務(wù)運(yùn)營咨詢費(fèi)合同
- 二零二五年度環(huán)保廣告投放與綠色營銷合同匯編
- 二零二五年度供應(yīng)鏈金融終止協(xié)議通知函
- 二零二五年度變壓器制造技術(shù)培訓(xùn)與轉(zhuǎn)讓協(xié)議
- 二零二五年度農(nóng)村安置房租賃保證金及退還合同
- 2025年度校企深度合作人才培養(yǎng)項(xiàng)目協(xié)議書
- 建筑公司勞務(wù)合同(2025年度)勞務(wù)人員工資及福利調(diào)整協(xié)議
- 二零二五年度山東省新建商品房買賣合同預(yù)售與社區(qū)教育服務(wù)協(xié)議
- 二零二五年度高利貸借款合同金融科技賦能發(fā)展
- 2024年上海市中考語文真題卷及答案解析
- 校園直飲水機(jī)供貨安裝及售后服務(wù)方案
- 廢氣處理系統(tǒng)改造及廢水處理系統(tǒng)改造項(xiàng)目可行性研究報告
- 小學(xué)全體教師安全工作培訓(xùn)
- 大學(xué)物業(yè)服務(wù)月考核評價評分表
- 現(xiàn)代家政導(dǎo)論-課件 1.1.2認(rèn)識家政學(xué)起源與發(fā)展
- 期末模擬測試卷(試卷)2024-2025學(xué)年六年級數(shù)學(xué)上冊人教版
- 2024屆護(hù)士資格考試必考基礎(chǔ)知識復(fù)習(xí)題庫及答案(共170題)
- 工業(yè)大數(shù)據(jù)算法賽項(xiàng)實(shí)際操作部分評分細(xì)則變更說明
- 小學(xué)生防性侵安全教育主題班會課件
- DBT29-305-2024 天津市裝配式建筑評價標(biāo)準(zhǔn)
評論
0/150
提交評論