計算與軟件工程作業三
| 作業要求 | 第三周作業 |
|---|---|
| 課程目標 | 單元測試 自我總結 |
| 作業幫助 | 了解單元測試的使用方法與功能 審視自身技能 |
| 參考文獻 | 構建之法 單元測試 |
作業正文
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://www.cnblogs.com/xinz/p/3852177.html),並針對未來的職業發展方向,指明還有哪些技術、技能需要在后續大學一年的時間里需要加強的。
在大學的前兩年接觸過c++、java、matlab等程序設計語言,計算機相關課程接觸過數據結構、操作系統、asp網頁設計、數據庫。語言學習基本停留在基礎階段,沒有深入的研究,能夠解決一些小問題,寫一些小程序,千行以內,並沒有在什么大項目上實踐過,數據結構也僅僅在理論層面有所理解,機試能力仍不足。目前仍在學習中,學習計算機四門基礎科目理論,打下基礎,將來打算從事計算機相關行業。
