zoukankan      html  css  js  c++  java
  • 软件工程(2018)第三次作业

    一、题目

    1、题目背景

      问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n
    例如,当(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20。

    2、题目要求

      从语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖五个覆盖标准中任选择一个标准测试用例,并用自动测试工具对程序进行测试,并将测试结果和自动测试分析结果截图附到博客中。


    二、解题

    1、解题思路

      此次作业编程我采用了c++编程,首先定义一个变量S来记录当前子段的和,定义变量Maxi和变量Maxj来记录和最大的子段的下标范围,定义变量Sum记录最大子段和,子段从第一个数开始,判断是否为负数,若是负数跳过,若不是负数,再比较S与Sum的大小,若S大于Sum,则将S的值赋给Sum,循环遍历全部整数,求得最大子段和。流程图如下:

    2、测试

      (1)语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。语句覆盖每条语句至少执行一次。判定覆盖每个判定的每个分支至少执行一次。条件覆盖每个判定的每个条件应取到各种可能的值。判定/条件覆盖同时满足判定覆盖条件覆盖。条件组合覆盖每个判定中各条件的每一种组合至少出现一次。路径覆盖使程序中每一条可能的路径至少执行一次。
      (2)本次作业测试用例采用判定/条件覆盖,由于对Java测试工具使用不熟练,多以本次测试的测试工具选择用codeblocks配置Googletest进行单元测试,测试结果如下:

    由上图可以看出我用了三个测试用例,满足判定/条件覆盖,并且测试结果完全正确。


    三、小结

      本次作业题目较简单,但是由于我对Java语言的学习不到位,对Java测试工具的使用不熟练,所以选择用C++语言进行编程,并且使用codeblocks测试工具进行测试,所以深深感受到多掌握一门编程语言的重要性。

    Codig代码链接:https://coding.net/u/yunshuinu/p/123/git/blob/master/1.cpp?public=true

  • 相关阅读:
    vue-cli
    respond.js
    dataTable调用接口渲染数据,没有数据,报错
    jq自定义鼠标右键菜单
    datatables通过ajax调用渲染数据,怎么根据数据给td添加class
    【C++ Primer 第11章 练习答案】2. 关联容器概述
    【Leetcode】1. Two Sum
    【C++】拷贝构造函数(深拷贝,浅拷贝)详解
    【图的遍历】广度优先遍历(DFS)、深度优先遍历(BFS)及其应用
    【C++ Primer 第十三章】4. 拷贝控制示例
  • 原文地址:https://www.cnblogs.com/yunshuinv/p/8681956.html
Copyright © 2011-2022 走看看