我分析記憶體洩漏的一道作業題,已解決

2022-09-16 08:03:10 字數 2432 閱讀 9139

1/*2

要求: 1. 定義乙個整數集合類 set,要求該類包含如下屬性和操作:

3屬性:

4① 元素表屬性 member[setsize]:是從 0 … setsize –1 範圍內的整數中選出 的元素表,其中 setsize 指定整數元素值和表中可以容納的元素個數的範圍,

5例如,可以在類外定義: const int setsize = 500;。 注意,元素表 member 的元素值只有兩種狀態(非 true 即 false)。如果元素 n 對應的元素表的元素值為真(true),

6則表示 n 在集合中,即 n∈x 當且僅當 member[n] 為真。 例如,集合 x = 對應的元素表中,只有元素 member[1],member[4], member[5],member[7]為真,

7而其餘元素均為假。

8操作:

9① 建構函式:構造 set 類物件分兩種情況:

10·如果不通過引數傳遞初值,則在集合物件的構造過程中,元素表 member 的各 個元素被預設設定為 false,即空元素表。

11·如果將乙個整型陣列 a和陣列的元素個數 n 作為引數傳遞初值,則在集合物件 的構造過程中,元素表中由陣列 a的元素值作為下標的元素值被設定為 true,

12而其他元素設定為 false。

13② 插入元素操作 insert:通過引數將乙個在 0 … setsize –1 範圍內的整數 n 插 入集合中,即 member[n] = true。

14③ 刪除元素操作 delete:通過引數將乙個在 0 … setsize –1 範圍內的整數 n 從集合中刪除,即 member[n] = false。

15④ 並集運算操作 operator+:將兩個 set 物件表示的整數集合進行並集運算,並返 回結果集合。

16⑤ 交集運算操作 operator*:將兩個 set 物件表示的整數集合進行交集運算,並返 回結果集合。

17⑥ 屬於集合運算操作 operator^:判斷乙個整數元素是否屬於乙個指定的 set 物件 表示的整數集合,並返回結果標誌(非 true 即 false)。

18被判斷的整數元素和整數 集合通過引數傳遞給操作。

19⑦ 輸出操作:通過標準輸出流 cout,按集合的表示格式輸出顯示整數集合

20*/

21 #include22 #include 23

using

namespace

std;

24class

set25

32 set(int n, int

p);33 set(int n)

34void insert(unsigned int

n);35

void delete(unsigned int

n);36

int* geta()

37 friend set operator+(set x, set y);//

並集38 friend set operator*(set x, set y);//

交集39

bool

operator^(int

op);

40void

showa();

41void

showm();

42void delete()

43//

~set()

//兩個友元函式中定義了例項物件,由編譯器析構的話,物件的記憶體不存在,

44//

計算得出的集合也就無法輸出

45};

46bool set::operator^(int

op)47

53void

set::showa()

5458

void

set::showm()

5963 set::set(int n, int

p)64

91//

deletep;

9293}94

void set::insert(unsigned int

n)95

101void set::delete(unsigned int

n)102

108 set operator+(set x, set y)

109119 set operator*(set x, set y)

120132

133int*np = new

int[mi];

134for (int i = 0; i < mi; i++)

135 np[i] =p[i];

136//

deletep;

//嗯,在函式體中,應該呼叫完畢就撤銷了記憶體吧?

137set t(mi, np);

138return

t;139

}140

intmain()

141

一道作業題

時間限制 1000 ms 記憶體限制 64 mb 題目描述 初始有乙個數n,每過一秒所有大於1的數x都會 成3部分 x 2 x 2 x 2 問經過足夠長的時間後,即所有的數都是0或1的時候,0的個數是多少.輸入資料 乙個正整數n,n 1e12 輸出資料 最終0的個數 樣例輸入 5樣例輸出 2樣例說明...

一道演算法作業題(續)

在乙個圓形操場的四周擺放著n堆石子,現要將石子有次序地合併成一堆。規定每次只能選擇相鄰的兩堆石子合併成新的一堆,並將新一堆石子數記為該次合併的得分。試設計乙個動態規劃演算法,計算出將n堆石子合併成一堆的最小得分和最大得分,要求列出遞迴方程,寫出演算法的偽 並分析演算法的時間空間複雜性。要求每次合併必...

最近做的一道c 作業題

今天突然想到,接觸這玩意快一年了,結果還是弱雞乙隻。一直跟自己說慢慢來,但是覺得,還是不能慢慢來,雖然想好好學習,但一直只是想。有時候想什麼高數什麼大物都不寫,但是囿於現實,沒辦法。沒地方說事情就在這裡巴拉巴拉一大堆先。看題吧 實驗內容 實驗 編寫乙個人員資訊管理系統。這個系統的功能是 互動式的實現...