计算与软件工程作业三

计算与软件工程作业三

作业要求 第三周作业
课程目标 单元测试 自我总结
作业帮助 了解单元测试的使用方法与功能 审视自身技能
参考文献 构建之法 单元测试

作业正文

https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10454

单元测试

数组中最大子数组的和。
  • 用类/函数来实现
    需求:希望返回 3 种信息
    最大子数组的和
    最大子数组开始的下标
    最大子数组结束的下标
    从文本文件中读输入的数据,熟悉文件操作, 文件有两种数据
    第一个数字:这次测试中有多少个数据, 数字后面是冒号。
    后续数字: 每个数据的值,用逗号隔开
    比如
    文件内容:
    17: -32, -10, 33, -23, 32, -12, 41, -12, 1, 3, 5, -98, 70, -21, 10, -9, 61
    输出
    sum = 71
具体代码
#include <iostream>
using namespace std;

int getMax(int a,int b){
    return a>b?a:b;
}

int maxSum(int arr[],int n){
    int sum=arr[0];
    int max=arr[0];
    int newstart=0;
    int start=0;
    int end=0;
    for(int i=1;i<n;i++){
        sum=getMax(sum+arr[i],arr[i]);
        if(arr[i]>(sum+arr[i]))
            newstart=i;
        if(sum>max){
            max=sum;
            start=newstart;
            end=i;
        }
    }
    return max;
}

int start(int arr[],int n){
    int sum=arr[0];
    int max=arr[0];
    int newstart=0;
    int start=0;
    int end=0;
    for(int i=1;i<n;i++){
        sum=getMax(sum+arr[i],arr[i]);
        if(arr[i]>sum+arr[i])
            newstart=i;
        if(sum>max)
            max=sum;
        start=newstart;
        end=i;
    }
    return start;
}

int end(int arr[],int n){
    int sum=arr[0];
    int max=arr[0];
    int newstart=0;
    int start=0;
    int end=0;
    for(int i=1;i<n;i++){
        sum=getMax(sum+arr[i],arr[i]);
        if(arr[i]>(sum+arr[i]))
            newstart=i;
        if(sum>max)
            max=sum;
        start=newstart;
        end=i;
    }
    return end;
}

int main(){
    int arr[]={-32, -10, 33, -23, 32, -12, 41, -12, 1, 3, 5, -98, 70, -21, 10, -9, 61};
    int length=17;
    cout<<"数组最大子数组和:"<<maxSum(arr,length)<<endl;
    cout<<"数组最大子数组起始下标:"<<start(arr,length)<<endl;
    cout<<"数组最大子数组结束下标:"<<end(arr,length)<<endl;
    return 0;
}

Windows电脑滞留在宿舍,macos没有找到合适的工具,无法做c++的单元测试,返校后再回顾。

Gitee链接

https://gitee.com/Vhe_jian/Learning/tree/master/MSA/

博客作业

回顾总结你在信息与计算科学专业前两年的学习经历和项目技能等,写一篇关于你自己的简历,介绍你的技能,并针对未来准备从事的职业,评价你目前的技术、能力是否胜任,(个人能力的评价可以参考软件工程师个人能力评价表https://www.cnblogs.com/xinz/p/3852177.html),并针对未来的职业发展方向,指明还有哪些技术、技能需要在后续大学一年的时间里需要加强的。

在大学的前两年接触过c++、java、matlab等程序设计语言,计算机相关课程接触过数据结构、操作系统、asp网页设计、数据库。语言学习基本停留在基础阶段,没有深入的研究,能够解决一些小问题,写一些小程序,千行以内,并没有在什么大项目上实践过,数据结构也仅仅在理论层面有所理解,机试能力仍不足。目前仍在学习中,学习计算机四门基础科目理论,打下基础,将来打算从事计算机相关行业。

posted @ 2020-03-10 16:33  贺坚  阅读(181)  评论(8编辑  收藏  举报