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