计算与软件工程作业三

作业要求 作业要求链接
我在这个课程的目标 学习软件工程的基本操作,能够自行完成作业,并能将软件工程与其他课程联系起来
此作业在哪个具体方面帮我实现目标 看完相关的博文链接后,学习单元测试的操作,以及如何写单元测试的代码,遇到问题时,在网上寻找各种解决方案,向同学请教等
参考文献 在Visual Studio 2017 上对 C++ 进行单元测试 , 如何编写C与C++单元测试代码
gitee 链接 gitee仓库链接

作业正文

单元测试运行截图
图片名称
程序代码

#include <stdio.h>
#include<iostream>
#include<vector>
using namespace std;

int getmax(int data[], int length)
{
	int temp = 0, start = 0, end = 0, i = 0, num = 0, max = 0, flag = 0;
	while (i < length)
	{
		if (data[i] > 0)
		{
			temp = i;
			while (temp < length)
			{
				num += data[temp];

				if (num < 0)   //当num<0时退出这个循环
				{
					num = 0;
					i = temp + 1;
					break;
				}

				if (num > max) //不加=说明若存在多个最大子数组时取第一个,加上=说明取最后一个
				{
					start = i;
					max = num;
					end = temp;
					//cout<<i<<" "<<temp<<endl;

				}
				temp++;
			}
			if (temp >= length) //当temp已经循环到数组最后一位,则结束整个外层循环
				break;
		}
		else
		{
			i++;
			flag++;  //用来记录负数出现的次数
		}
	}
	if (flag == length) //数组全为负数的情况
	{
		int max = data[0];
		for (i = 1; i < length; i++)
		{
			if (data[i] > max)
			{
				max = data[i];
			}
		}
		return max;
	}

	for (i = start; i <= end; i++)  //打印最大子数组
		cout << data[i] << " ";
	cout << endl;
	return max;
}
//更简单的写法,没有输出下标
int findmax(vector<int> ve)
{
	if (ve.size() == 0)
		return 0;
	int i = 0, sum = 0, great = INT_MIN;
	for (i = 0; i < ve.size(); i++)
	{
		if (sum <= 0)
			sum = ve[i];
		else
			sum += ve[i];
		if (sum > great)
			great = sum;
	}

	return great;
}

int main()
{
	int data[] = { -5,-4,-3,-2,-1,1,2,3,4,5 };
	int length = sizeof(data) / sizeof(int);
	//int max = getMaxValue(data,length);
	cout << getmax(data, length) << endl;
	return 0;
}

单元测试代码

#include "pch.h"
#include "CppUnitTest.h"
#include "D:Max_SubArrayMax_SubArrayMax_SubArray.cpp"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace MaxSubArryTest1
{
	TEST_CLASS(MaxSubArryTest1)
	{
	public:

		TEST_METHOD(TestMethod1)
		{
			int data[] = { -5,-4,-3,-2,-1,1,2,3,4,5 };
			int length = sizeof(data) / sizeof(int);
			Assert::AreEqual(15, getmax(data, length));

		}
	};
}

图片名称
原文地址:https://www.cnblogs.com/1249575119jh/p/12450234.html