作者ric2k1 (Ric)
看板EE_DSnP
標題[建議] HW#7 的測試
時間Sun Dec 9 18:49:15 2007
有同學在問作業七要怎麼測試,
下列的 code 可以給大家參考一下... 當然歡迎你們測更多!!
=========================================================================
static void printArray(const IntArray& arr)
{
cout << "Access by index : ";
for (size_t i = 0, n = arr.size(); i < n; i++)
cout << "[" << i << "] " << arr.getData(i) << " " << endl;
cout << "Access by pointer: ";
for (size_t i = 0, n = arr.size(); i < n; i++)
cout << "[" << i << "] " << *(arr.getPosition(i)) << " " << endl;
}
int main()
{
IntArray arr(10);
cout << "Initial data for arr ---" << endl;
printArray(arr);
for (size_t i = 0, n = arr.size(); i < n; i++)
arr.setData(i, i*i);
cout << "Squared data for arr ---" << endl;
printArray(arr);
arr.resize(5);
cout << "Resize arr to 5 ---" << endl;
printArray(arr);
arr.resize(12);
cout << "Resize arr to 12 ---" << endl;
printArray(arr);
for (size_t i = 12; i < 20; i += 2)
arr.setData(i, i * 3);
cout << "Setting out of bound data ---" << endl;
printArray(arr);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.134.54
1F:推 ShooterYang:最上面的const IntArray& arr 是甚麼意思? 12/09 21:21
2F:→ ric2k1:就是傳進去的是 reference, 所以我們可以省去 array 的copy 12/09 21:27
3F:→ ric2k1:但是我又不希望 printArray 有權限改到 array 的內容, 12/09 21:28
4F:→ ric2k1:所以加上 const, 讓傳進去的 arr 變成 read-only. 12/09 21:29
5F:→ ric2k1:注意: 由於 arr 變成 const object in printArray(), 12/09 21:29
6F:→ ric2k1:他將只能呼叫 const member function. 12/09 21:30
7F:→ ric2k1:see post 751. 12/09 21:31
8F:推 ShooterYang: 所以是傳進去一個object嗎 12/09 21:37
9F:→ ShooterYang:喔沒事了 謝謝老師的回答 12/09 21:39
10F:→ ric2k1:Yes. 12/09 22:33
11F:推 ally01202:不是很懂... 怎樣的結果才對呢... 12/09 23:55
12F:推 Knossos:Debug一下..第5、9行應該是arr,不是arr1...XD 12/10 23:18
13F:→ Knossos:第一部份輸出10個元素,應該都要是0。 12/10 23:20
14F:→ Knossos:第二部份則是輸出標籤的平方:[4]=16.[8]=64 12/10 23:21
15F:→ Knossos:第三部份改變大小,應該變成輸出五個整數,數字不變 12/10 23:22
16F:→ Knossos:第四部份再把大小擴大到12,從元素五到十一的值為零 12/10 23:22
17F:→ Knossos:最後一部份比較特殊一點:元素1~5不變,其餘為零 12/10 23:23
18F:→ Knossos:但有特例:[12]=36.[14]=42.[16]=48.[18]=54 12/10 23:23
19F:→ Knossos:共十九個元素 12/10 23:24
20F:→ Knossos:嗯...這是我輸出的結果,僅供參考...XD 12/10 23:25
21F:→ Knossos:補充一下:每部分都要有相同的兩組答案,因為過程不同... 12/10 23:26
※ 編輯: ric2k1 來自: 59.121.128.162 (12/11 06:45)
22F:→ ric2k1:Thanks, 已修改. 12/11 06:45
23F:推 dryman:cout << "[" << i << "] " << (arr.getPosition(i)) << " 12/11 13:35
24F:→ dryman: ↑多了一個*印出不是地址 12/11 13:35
25F:→ dryman:第九行 12/11 13:36
26F:→ ric2k1:其實我就是要印出內容來比較一下 (應該跟 by index 一樣) 12/11 14:21
27F:→ ric2k1:不過像你建議印 address 也是不錯的測試方式 12/11 14:21