[討論] 單班dsa homework 1

作者: ryuchenchang (陳倉)   2013-02-27 00:23:25
不知道理解有沒有錯.....
如下列指示,你要把程式碼交到課程網站是指定的位置。
任何形式的偷撇步、造假、或抄襲都不會被放過。你要是這樣做,我們會給你零分/負分
、被當、或是退學。
我們鼓勵有關課程的討論。但是寫作業時大家還是要自己寫,並充分理解。書、筆記、網頁可以參考,但不能抄襲。
已經規定作業要獨立完成,你也沒有必要把作業借給別人。為了最大的公平,像別人借作業或是把作業借給他人的行為都被當作不誠實,並會給予嚴重處分。
作業可以使用中文或英文,但程式碼的部分,我們這次規定使用C++,並禁止使用printf(), scanf()等涵式。
這個作業的目的是要你學會C++。在C++理面,變數可以包裝成class,有點類似C的structure,
但是可以在class中定義操作這些變數的函數。你應該已經知道如何在class中定義函數,並用public讓他們可以在class以外的區域使用。在你們這禮拜的閱讀作業中,你要學會如何用一個constructor建構、初始化一個物件。我知道你們對C++不熟悉,因此決定給你們這個作業當做刺激,強迫你們去尋找資源並學習。給你們一個小建議:你們該開始去看書、煩TA了窩!
在class中,另外一個特別的涵式叫做operator,我們上課也展示過他的用法。operator函數會定義物件不同運算子下會做什麼運算,讓各個運算子學會新招,或是讓它超量負荷。你可以對各運算子作全域的定義,或是只有在class內的定義。超載的運算子要以函數實作。
在這次的功課理面,你要實作一個constructor、兩個函數、以及運算子超載。你要相處的class是一個一元的複數係數多項式,要實作的運算子包含相加、相減、相乘以及合成。舉例,你要超載+用來相加兩個多項式。再來,你要把宣告和實作分開。做出一個標頭擋poly.h,如
....
以及實作的檔案poly.cpp
作業要求:
請實作一個C++的class poly代表多項式,並具備下列項目:
1. class 標頭擋,包含下列函數的定義
2. class constructor,要合理的將物件初始話。
3. eval步驟,計算多項式的輸出值。
4. show步驟,會列印出多項式,有下列格式:
*係數升冪排列
*輸出以非零的首項系數結尾,若為零多項式,則印0.00
*各系數均以"+-a+-bi","+-a","+-bi",且a,b都是小數點顯示兩位的服點數。單獨出現的+號都要省略
*系數為 +-1.00時也不要省略系數
*輸出格式不包含引號""
*範例輸出如"3.14","1.00","2.72i","1.00+1.00i"
5. 超載+
6. 超載-
7. 超載*
8. 超載()
作業包含poly.h, poly.cpp. poly.h中做宣告,poly.cpp中實作。這兩個檔案會和助教寫的main.cpp結合,然後有向泛力一樣的輸入瀚樞出。
請注意,複數並不是一個C++內建的資料形態,我們鼓勵你實作一個ComplexNumber的物件,讓你的poly更容易寫,但是不搶破。
範例輸入
範例輸出
相關檔案:
main.cpp:TAs會用這個檔案測試你的物件。所以你必須實際想出以上函數。
MAKEFILE:TAs會用這個檔案make, make run還編譯、測試你的作業。請確認你的程式可以在217的linux機器上編譯、執行。否則你不會通過基本測資、拿零分。
繳交檔案:
請江你的作業壓縮成一的zip檔案並上傳ceiba,死線2013/3/7。檔名為學號,如
b01902999.zip。zip包含下列檔案:
poly.cpp
poly.h
想給TA看的README
MEDAL如果你想要用金牌,可以包含這個檔案,並在第一行寫一個數字,表示你想要用幾
面金牌。一面金牌可以把總分提高一倍,但是一學期只有四面,用了也不能追回,請小心使用。
※ 編輯: ryuchenchang 來自: 111.240.202.186 (02/27 00:29)
※ 編輯: ryuchenchang 來自: 111.240.202.186 (02/27 00:30)
作者: CharlieL (心平氣和)   2013-02-27 03:04:00
"一面金牌可以把總分提高一倍"是個大大的誤解 :-)
作者: ryuchenchang (陳倉)   2013-02-27 19:50:00
謝謝老師^^

Links booklink

Contact Us: admin [ a t ] ucptt.com