範例執行程式, 資料檔案: ass1_data1.dat, ass1_data0.dat
請注意 ass1_data0.dat 要和 testSet.exe 放在同一個資料匣裡面
如附件顯示執行時先要輸入 ass1_data1.dat 或是 ass1_data2.dat 或是 ass1_data3.dat 然後給一個輸出檔案名稱, (程式會將交集, 聯集, 差集三個集合順序寫入檔案中) 程式自己會去開啟固定名稱的檔案 ass1_data0.dat請注意: ass1_data1.dat (或是 ass1_data2.dat 或是 ass1_data3.dat) 檔案中先後存放了兩個集合
在這個作業中我們希望製作一個 "集合" 的類別, 集合一般在數學的表示方法中是用 {1, 3, 5, 7}, {a, b, c} 來表示的, 每一個集合中相同的元素不可以出現多次, (元素可以出現多次的集合稱為 multiset, 我們在這個作業中實作的不是 multiset), 對於一個集合的物件來說, 有一些基本的運算, 例如: 交集, 聯集, 差集, 屬於, 包含於, 等等 請製作一個整數的集合類別, 能夠放進去的元素一定要是 -100000 ~ 100000 之間的整數
例如原來物件 A 的內容是 {1, 2, 3, 4, 8}, B 的內容是 {1, 3, 5, 6, 7, 8}
A.intersect(B);執行完以後 A 集合的內容成為 {1, 3, 8}
四個位元組的整數代表集合內的元素個數 n, 四個位元組的整數代表第 1 個元素, 四個位元組的整數代表第 2 個元素, ... 四個位元組的整數代表第 n 個元素,如果你會用參考變數, 這個地方是可以用參考變數的地方, 但是不會用參考用指標還是可以完成指定的工作
請由鍵盤讀入一個二進位檔案名稱, (例如 ass1_data1.dat) 打開此檔案, 由此檔案中讀入兩個集合 A, B, 判斷集合是否相等, 是否有包含於的關係, 在螢幕上列印判斷結果, 在螢幕上印出各個集合的元素個數, 以及集合的內容, 算出交集, 聯集, 差集, 將這三個集合寫入一個輸出檔案中, 並且分別列印在螢幕上 (參考範例程式的輸出), 請由文字檔案 ass1_data0.dat 中讀取集合 C 的資料, 列印集合 C-A-B 最後進入一個迴圈, 由鍵盤讀入一個整數, 並且測試否該整數在 C - A - B 的集合中 請注意資料檔案 ass1_data0.dat 中有重複的元素
原則上你想要增加什麼功能都是可以的, 記得在心得中寫出來, 這樣我才會注意到, 也才能夠幫你加一些分數, 現在程式還簡單, 你應該有辦法增加功能或是基於這個類別做一些好玩的應用。
回
C++ 程式設計課程
首頁
製作日期: 2/27/2004
by 丁培毅 (Pei-yih Ting)
E-mail: [email protected]
TEL: 02 24622192x6615
海洋大學
工學院
資訊工程系
Lagoon