github地址:https://github.com/yo123abxd/software_testc++
PSP2.1git |
PSP階段github |
預估耗時函數 (分鐘)學習 |
實際耗時測試 (分鐘)編碼 |
Planningspa |
計劃設計 |
10 | 20 |
· Estimate代碼規範 |
· 估計這個任務須要多少時間 |
3天 | 4天 |
Development |
開發 |
3天 | 3天 |
· Analysis |
· 需求分析 (包括學習新技術) |
3小時 | 3小時 |
· Design Spec |
· 生成設計文檔 |
10分鐘 | 10分鐘 |
· Design Review |
· 設計複審 (和同事審覈設計文檔) |
10分鐘 | 10分鐘 |
· Coding Standard |
· 代碼規範 (爲目前的開發制定合適的規範) |
15分鐘 | 13分鐘 |
· Design |
· 具體設計 |
1個小時 | 1個小時 |
· Coding |
· 具體編碼 |
1天 | 1天 |
· Code Review |
· 代碼複審 |
1天 | 1天 |
· Test |
· 測試(自我測試,修改代碼,提交修改) |
8小時 | 8小時 |
Reporting |
報告 |
1小時 | 1小時 |
· Test Report |
· 測試報告 |
1小時 | 1小時 |
· Size Measurement |
· 計算工做量 |
2小時 | 2小時 |
· Postmortem & Process Improvement Plan |
· 過後總結, 並提出過程改進計劃 |
1小時 | 1小時 |
合計 |
解題思路:
每多一行linenum就++,每遇到一個字符chnum就++,每(s[i] == ' ' || s[i] == ',') && (s[i] != ' ' && s[i] != ',') wordnum就++
實現過程:
每一個遇到一個文件就調一次數數的函數。
代碼說明:
主要代碼:
class Counter {
27 public:
28 vector<int> count(fstream& fs) {
29 int chNum = 0, wordNum = 0, lineNum = 0;
30 string s;
31 while(getline(fs, s)) {
32 for(int i = 1; i < s.size(); i++) {
33 wordNum += (s[i] == ' ' || s[i] == ',') && (s[i] != ' ' && s[i] != ',');
34 }
35 wordNum++;
36 chNum += s.size();
37 lineNum++;
38 }
39 return vector<int>({chNum, wordNum, lineNum});
40 }
41 };
測試過程:
吧編寫好的.cpp文件丟進去測試
參考文獻連接:
c++ primer