zoukankan      html  css  js  c++  java
  • 计算机与软件工程作业三

    计算机与软件工程作业三

    作业要求 第三周作业
    课程要求 按照作业要求完成作业并进行自我总结
    参考文献 参考文献
    作业正文 [作业](https://i-beta.cnblogs.com/posts/edit)

    正文

    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
    实现这个类 (MSA)
    可以用 C++, Java, C#,Python class 等
    类开始是空的,返回都是简单的数值,例如 0.
    测试包括测试文件读入与计算(测试过程通过程序新建一个文件,内容可以为上述数字,测试完后得删除文件)
    设计单元测试,运行单元测试
    开始:所有单元测试都失败
    改进程序,加入正确的逻辑,看到有单元测试通过,并且看到代码覆盖率的增加
    重复, 直到所有单元测试都通过,代码覆盖率达到满意的结果。

    代码如下

    include
    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;
    }

    码云链接
    https://gitee.com/lazycat777/Test/commit/6d7595ebea26b086adb38006f4f5e861c5eb5882

  • 相关阅读:
    Mongodb在windows下的安装和启动
    git操作的常用命令
    删除smartygit的配置文件
    注册树模式
    关于js的一些基础知识点
    关于mysql的初步学习 (五)
    关于mysql的初步学习 (四)
    关于mysql的初步学习 (三)
    关于mysql的初步学习 (二)
    关于数据库建表时的有趣实例--关键字重复
  • 原文地址:https://www.cnblogs.com/lazycat777/p/12483269.html
Copyright © 2011-2022 走看看