計算與軟件工程作業三


作業要求 (https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10454)
我在這個課程的目標是 幫助自己提高自己的計算機技能
此作業在哪個具體方面幫我實現目標 通過寫代碼
其參考文獻 (https://www.cnblogs.com/xinz/archive/2011/11/20/2255830.html)

作業正文

單元測試

數組中最大子數組的和。

用類/函數來實現
需求:希望返回 3 種信息
最大子數組的和
最大子數組開始的下標
最大子數組結束的下標
從文本文件中讀輸入的數據,熟悉文件操作, 文件有兩種數據
第一個數字:這次測試中有多少個數據, 數字后面是冒號。
后續數字: 每個數據的值,用逗號隔開
比如
文件內容:
17: -32, -10, 33, -23, 32, -12, 41, -12, 1, 3, 5, -98, 70, -21, 10, -9, 61
輸出
sum = 71

運行截圖

代碼

#include<iostream>
        #include<cstdlib>
    using namespace std;
    int getmax(int array[],int length)
    {
        int sum = 0;
        int max = 0;
        int startIndex = 0; //記錄子數組的起始位置
        int endIndex = 0;   //記錄子數組的終止位置
        int newStartIndex = 0;
        for (int i = 0; i < length; i++)    //遍歷整個目標數組
    {
        if (max < 0)
        {
            max = array[i];
            newStartIndex = i;
        }
        else
        {
            max += array[i];
        }
        if (sum < max) //如果此時 sum < temp;
        {
            sum = max;
            startIndex = newStartIndex;
            endIndex = i;
        }
    }
    return max;
}

int getstartIndex(int array[],int length)
{
    int sum = 0;
    int max = 0;
    int startIndex = 0;
    int endIndex = 0;
    int newStartIndex = 0;
    for (int i = 0; i < length; i++)
    {
        if (max < 0)
        {
            max = array[i];
            newStartIndex = i;
        }
        else
        {
            max += array[i];
        }
        if (sum < max)
        {
            sum = max;
            startIndex = newStartIndex;
            endIndex = i;
        }
    }
    return startIndex;
}
int getendIndex(int array[],int length)
{
    int sum = 0;
    int max = 0;
    int startIndex = 0;
    int endIndex = 0;
    int newStartIndex = 0;
    for (int i = 0; i < length; i++)
    {
        if (max < 0)
        {
            max = array[i];
            newStartIndex = i;
        }
        else
        {
            max += array[i];
        }
        if (sum < max)
        {
            sum = max;
            startIndex = newStartIndex;
            endIndex = i;
        }
    }
    return endIndex;
}


int main()
{
    int array[]={-3,-10,33,-23,32,-12,4,-12,1,3,5,-8,70,-21,1,-9,61};
    int length=17;
    cout<<"最大子數組的和:"<<getmax(array,length)<<endl;
    cout<<"最大子數組開始的下標:"<<getstartIndex(array,length)<<endl;
    cout<<"最大子數組結束的下標:"<<getendIndex(array,length)<<endl;
    system("pause");
    return 0;
}

博客作業

回顧總結你在信息與計算科學專業前兩年的學習經歷和項目技能等,寫一篇關於你自己的簡歷,介紹你的技能,並針對未來准備從事的職業,評價你目前的技術、能力是否勝任,(個人能力的評價可以參考軟件工程師個人能力評價表https://www.cnblogs.com/xinz/p/3852177.html),並針對未來的職業發展方向,指明還有哪些技術、技能需要在后續大學一年的時間里需要加強的。

介紹

從大一開始接觸c++,我學的並不是很好,加上自己對其不是很感興趣,所以也沒有那么的認真去學,但是往后接觸了更多的計算機語言讓我明白這是一門很重要的學科,對未來從業非常重要,因此我往后會更加認真的學習,增強自己的能力,多學多做。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM