软工第三次作业
作业要求的链接 | https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10454 |
---|---|
该次作业在程序效能方面实现我的目标 | 学习单元测试 |
其他参考文献 | https://blog.csdn.net/liuchuo/article/details/52144554 |
作业正文 | https://www.cnblogs.com/taotaochen/p/12463017.html |
作业要求
单元测试
数组中最大子数组的和。
用类/函数来实现
需求:希望返回 3 种信息
最大子数组的和
最大子数组开始的下标
最大子数组结束的下标
从文本文件中读输入的数据,熟悉文件操作, 文件有两种数据
第一个数字:这次测试中有多少个数据, 数字后面是冒号。
后续数字: 每个数据的值,用逗号隔开
比如
文件内容:
17: -32, -10, 33, -23, 32, -12, 41, -12, 1, 3, 5, -98, 70, -21, 10, -9, 61
输出
sum = 71
实现这个类 (MSA)
可以用 C++, Java, C#,Python class 等
类开始是空的,返回都是简单的数值,例如 0.
测试包括测试文件读入与计算(测试过程通过程序新建一个文件,内容可以为上述数字,测试完后得删除文件)
设计单元测试,运行单元测试
开始:所有单元测试都失败
改进程序,加入正确的逻辑,看到有单元测试通过,并且看到代码覆盖率的增加
重复, 直到所有单元测试都通过,代码覆盖率达到满意的结果。
程序需要从当地push到远程个人仓库
参见 《构建之法》第二章单元测试的内容 以及
https://www.cnblogs.com/xinz/archive/2011/11/20/2255830.html
https://www.cnblogs.com/SivilTaram/p/software_pretraining_cpp.html
博客作业
回顾总结你在信息与计算科学专业前两年的学习经历和项目技能等,写一篇关于你自己的简历,介绍你的技能,并针对未来准备从事的职业,评价你目前的技术、能力是否胜任,(个人能力的评价可以参考软件工程师个人能力评价表https://www.cnblogs.com/xinz/p/3852177.html),并针对未来的职业发展方向,指明还有哪些技术、技能需要在后续大学一年的时间里需要加强的。
预习
请阅读现代软件工程讲义:3 两人合作,参见 https://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html
代码
//以下代码修改自CSDN柳婼PAT A1007
#include <iostream>
using namespace std;
int maxsum(int a[],int n){
int leftindex = 0, rightindex = n - 1, sum = -1, temp = 0, tempindex = 0;
for (int i = 0; i < n; i++) {
temp = temp + a[i];
if (temp < 0) {
temp = 0;
tempindex = i + 1;
} else if (temp > sum) {
sum = temp;
leftindex = tempindex;
rightindex = i;
}
}
if (sum < 0) sum = 0;
printf("最大子数组和 %d
该子数组开始的下标 %d
该子数组结束的下标 %d
", sum, leftindex, rightindex);
return 0;
}
int main() {
int n;
scanf("%d", &n);
int v[100];
for (int i = 0; i < n; i++) {
scanf("%d", &v[i]);
}
maxsum(v,n);
system("pause");
return 0;
}
单元测试代码
#include "stdafx.h"
#include "CppUnitTest.h"
#include"maxsum.cpp"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace maxsumTest
{
TEST_CLASS(UnitTest1)
{
public:
TEST_METHOD(TestMethod1)
{
// TODO: 在此输入测试代码
int data[] = { -32, -10, 33, -23, 32, -12, 41, -12, 1, 3, 5, -98, 70, -21, 10, -9, 61 };
Assert::AreEqual(111,maxsum(data, 17));
}
};
}