17074211张昊 计算与软件工程作业3
这个作业要求在哪里 | 第三次作业 |
---|---|
我在这个课程的目标是 | 成功求数组中最大子数组的和 |
此作业在哪个具体方面帮我实现目标 | 运行了单元测试 |
其他参考文献 | https://www.cnblogs.com/xinz/archive/2011/11/20/2255830.html |
gitee链接 | 代码 |
单元测试要求#
- 开始:所有单元测试都失败
- 改进程序,加入正确的逻辑,看到有单元测试通过,并且看到代码覆盖率的增加
- 重复, 直到所有单元测试都通过,代码覆盖率达到满意的结果。
代码#
#include<iostream>
#include<cstdlib>
using namespace std;
int getmax(int array[],int length)
{
int sum = 0;
int max = 0;
int startIndex = 0;
int endIndex = 0;
int newStartIndex = 0;
for (int i = 0; i < length; i++)
{
if (max < 0)
{
max = array[i];
newStartIndex = i;
}
else
{
max += array[i];
}
if (sum < max)
{
sum = max;
startIndex = newStartIndex;
endIndex = i;
}
}
return max;
}
int getstartIndex(int array[],int length)
{
int sum = 0;
int max = 0;
int startIndex = 0;
int endIndex = 0;
int newStartIndex = 0;
for (int i = 0; i < length; i++)
{
if (max < 0)
{
max = array[i];
newStartIndex = i;
}
else
{
max += array[i];
}
if (sum < max)
{
sum = max;
startIndex = newStartIndex;
endIndex = i;
}
}
return startIndex;
}
int getendIndex(int array[],int length)
{
int sum = 0;
int max = 0;
int startIndex = 0;
int endIndex = 0;
int newStartIndex = 0;
for (int i = 0; i < length; i++)
{
if (max < 0) //如果max < 0;
{
max = array[i];
newStartIndex = i;
}
else
{
max += array[i];
}
if (sum < max)
{
sum = max;
startIndex = newStartIndex;
endIndex = i;
}
}
return endIndex;
}
int main()
{
int length,i=0;
cout<<"请输入个数:";
cin>>length;
cout<<"请输入数组:";
int array[1000]={0};
for(i=0;i<length;i++)
{
cin>>array[i];
}
cout<<"最大子数组的和为:"<<getmax(array,length)<<endl;
cout<<"最大子数组起始下标:"<<getstartIndex(array,length)<<endl;
cout<<"最大子数组结束下标:"<<getendIndex(array,length)<<endl;
system("pause");
return 0;
}
单元测试#
#include "pch.h"
#include "CppUnitTest.h"
#include"max.cpp"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace UnitTest1
{
TEST_CLASS(UnitTest1)
{
public:
TEST_METHOD(getmax_Test)
{
//TODO: 在此输入测试代码
int data[] = { -32, -10, 33, -23, 32, -12, 41, -12, 1, 3, 5, -98, 70, -21, 10, -9, 61 };
Assert::AreEqual(111, getmax(a, 17));
}
};
}
博客作业#
总结##
在信息与计算科学专业前两年的学习经历中,学习了如c++,c语言,Java,matlab等项目技能,但是这些技能我都还处于入门阶段,还需要在接下来一年多的学习中,增加自己的个人能力,多学多做才能有所进步。