软件工程第三次作业

软工第三次作业

作业要求的链接 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));

		}

	};
}
原文地址:https://www.cnblogs.com/taotaochen/p/12463017.html