計算與軟件工程作業三


計算與軟件工程作業三

作業要求 第三周作業
課程目標 單元測試 自我總結
作業幫助 了解單元測試的使用方法與功能 審視自身技能
參考文獻 構建之法 單元測試

作業正文

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網頁設計、數據庫。語言學習基本停留在基礎階段,沒有深入的研究,能夠解決一些小問題,寫一些小程序,千行以內,並沒有在什么大項目上實踐過,數據結構也僅僅在理論層面有所理解,機試能力仍不足。目前仍在學習中,學習計算機四門基礎科目理論,打下基礎,將來打算從事計算機相關行業。


免責聲明!

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



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