计算与软件工程作业三

作业要求 作业要求链接
我在这个课程的目标 学习软件工程的基本操作,能够自行完成作业,并能将软件工程与其他课程联系起来
此作业在哪个具体方面帮我实现目标 看完相关的博文链接后,学习单元测试的操作,以及如何写单元测试的代码,遇到问题时,在网上寻找各种解决方案,向同学请教等
参考文献 在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_SubArray\Max_SubArray\Max_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));

        }
    };
}

图片名称

猜你喜欢

转载自www.cnblogs.com/1249575119jh/p/12450234.html