專案
內容這個作業屬於哪個課程
2020春季計算機學院軟體工程(羅傑 任健)
這個作業的要求在**
個人專案作業
我在這個課程的目標是
進一步提高自己的編碼能力,工程能力
這個作業在哪個具體方面幫助我實現目標
學習c++,掌握測試方法,掌握軟體工程開發規範和相關工具的使用
其他參考文獻
部落格1教學班級
006專案地址
本次作業內容比較簡單,比較適合軟體工程入門,由於之前沒有用c++寫過程式,所以這次寫起來不算是特別順利,出過很多玄學bug,不過藉助搜尋引擎的幫助,我的問題都解決了。通過這次作業我也正好入門了c++的物件導向機制,為以後的作業打下基礎。
psp2.1
personal software process stages
預估耗時(分鐘)
實際耗時(分鐘)
planning
計劃· estimate
· 估計這個任務需要多少時間
2020
development
開發· analysis
· 需求分析 (包括學習新技術)
6060
· design spec
· 生成設計文件
3050
· design review
· 設計複審 (和同事稽核設計文件)
2020
· coding standard
· **規範 (為目前的開發制定合適的規範)
2010
· design
· 具體設計
3030
· coding
· 具體編碼
240300
· code review
· **複審
3020
· test
· 測試(自我測試,修改**,提交修改)
180240
reporting
報告· test report
· 測試報告
5030
· size measurement
· 計算工作量
1010
· postmortem & process improvement plan
· 事後總結, 並提出過程改進計劃
1010
合計
700
800
拿到這個題之後,首先明白這是一道求交點的題,根據數學知識即可得出求交點的公式:
採用o(n^2)的演算法,每新增一條直線或者一個圓,就和之前輸入的所有直線和圓進行交點計算,並儲存到相應容器中,最後統計儲存的交點數量。
本**共有4個類:
circle:儲存圓方程的引數;
intersect:儲存所有直線、圓和交點。
採用stl中的set儲存,set中的insert方法可以在插入新元素的同時自動去除重複的元素,由於本次作業的交點是浮點數,所以在**中過載了set中的《運算子,在進行浮點數比較時忽略極小的數值差異,達到去重的目的。
對於以下每種情況分別手動編寫測試資料:
本次作業我在演算法上沒有什麼改進的地方,主要是一些細節的改善,比如減少重複的函式呼叫等等。
這裡是直接套公式計算交點座標並儲存在intersect中。
直接翻譯上面提到的演算法就可以,這裡要注意的是,答案可能是兩個相同的點也可能是兩個不同的點,由於set有去重的功能,這裡統一按兩個不同點的情況來計算。
在計算出交點連線的方程後直接呼叫直線和圓的交點方法即可。