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

    作业三

    作业要求 https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10454
    课程目标 学会软件简单语言,完成简单软件功能的开发
    此作业在哪个具体方面帮我实现目标 代码运行,寻找bug
    作业正文 https://www.cnblogs.com/limin123/p/12455500.html

    代码运行结果

    代码:

    #include<iostream>
    #include<cstdlib>
    using namespace std;
    int getmax(int array[],int length)
    {
        int sum = 0;    //记录当前连续子数组的最大和
        int max = 0;   //记录当前数组连续几个元素的和(当其值小于0时,重新对其赋值;【即:抛弃前面的所有元素】)
        int startIndex = 0; //记录子数组(和最大)的起始位置
        int endIndex = 0;   //记录子数组(和最大)的终止位置
        int newStartIndex = 0;  //记录子数组(和最大)的新的起始位置
        for (int i = 0; i < length; i++)    //遍历整个目标数组
        {
            if (max < 0)   //如果max < 0;则要对max重新赋值
            {
                max = array[i];    //对max重新赋值
                newStartIndex = i;  //暂时记录子数组(和最大)的新的起始位置(要看后续的sum 和 max是否发生交换)
            }
            else
            {
                max += array[i];   //如果max >= 0;则要继续将此时的数组元素(array[i])加入到max中
            }
            if (sum < max) //如果此时 sum < max;则表示此时的子数组和大于之前的子数组和
            {
                sum = max; //将大的子数组和max赋值给sum
                startIndex = newStartIndex; //子数组(和最大)的新的起始位置起作用了
                endIndex = i;   //子数组(和最大)的终止位置(只要发生交换就说明endIndex发生变化)
            }
        }
        return max;
    }
    
    int getstartIndex(int array[],int length)
    {
        int sum = 0;    //记录当前连续子数组的最大和
        int max = 0;   //记录当前数组连续几个元素的和(当其值小于0时,重新对其赋值;【即:抛弃前面的所有元素】)
        int startIndex = 0; //记录子数组(和最大)的起始位置
        int endIndex = 0;   //记录子数组(和最大)的终止位置
        int newStartIndex = 0;  //记录子数组(和最大)的新的起始位置
        for (int i = 0; i < length; i++)    //遍历整个目标数组
        {
            if (max < 0)   //如果temp < 0;则要对temp重新赋值
            {
                max = array[i];    //对max重新赋值
                newStartIndex = i;  //暂时记录子数组(和最大)的新的起始位置(要看后续的sum 和 max是否发生交换)
            }
            else
            {
                max += array[i];   //如果max >= 0;则要继续将此时的数组元素(array[i])加入到max中
            }
            if (sum < max) //如果此时 sum < max;则表示此时的子数组和大于之前的子数组和
            {
                sum = max; //将大的子数组和max赋值给sum
                startIndex = newStartIndex; //子数组(和最大)的新的起始位置起作用了
                endIndex = i;   //子数组(和最大)的终止位置(只要发生交换就说明endIndex发生变化)
            }
        }
        return startIndex;
    }
    int getendIndex(int array[],int length)
    {
        int sum = 0;    //记录当前连续子数组的最大和
        int max = 0;   //记录当前数组连续几个元素的和(当其值小于0时,重新对其赋值;【即:抛弃前面的所有元素】)
        int startIndex = 0; //记录子数组(和最大)的起始位置
        int endIndex = 0;   //记录子数组(和最大)的终止位置
        int newStartIndex = 0;  //记录子数组(和最大)的新的起始位置
        for (int i = 0; i < length; i++)    //遍历整个目标数组
        {
            if (max < 0)   //如果max < 0;则要对max重新赋值
            {
                max = array[i];    //对max重新赋值
                newStartIndex = i;  //暂时记录子数组(和最大)的新的起始位置(要看后续的sum 和 max是否发生交换)
            }
            else
            {
                max += array[i];   //如果max >= 0;则要继续将此时的数组元素(array[i])加入到max中
            }
            if (sum < max) //如果此时 sum < max;则表示此时的子数组和大于之前的子数组和
            {
                sum = max; //将大的子数组和max赋值给sum
                startIndex = newStartIndex; //子数组(和最大)的新的起始位置起作用了
                endIndex = i;   //子数组(和最大)的终止位置(只要发生交换就说明endIndex发生变化)
            }
        }
        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;
    }
    

    博客作业

    从大一到大三,我们也学过很多计算机方面的课程,有MS Office,C++,java,matlab...这些都是简单的软件,我也只是学习了一些简单的操作学习建立文件,操作代码,运行代码,但都只是一些皮毛,希望在未来的大学生活里学习更多的有关于编程之类的知识,提高自己的技能。

    码云代码:https://gitee.com/li_min_123/software_engineering/tree/master/

  • 相关阅读:
    qml: QtCharts模块得使用(数据整合和显示) ---- <二>
    qml: QtCharts模块的使用(基本配置)------<一>
    【转载】Qt之JSON生成与解析
    qml: 支持的基本类型
    opencv: 基本知识;
    qml: 模块定义与使用
    Android studio开发中遇到的错误
    阅读笔记——《人月神话》5
    Android studio Adapter基础
    Android studio Date & Time组件2
  • 原文地址:https://www.cnblogs.com/limin123/p/12455500.html
Copyright © 2011-2022 走看看