軟工第三次作業
作業要求的鏈接 | https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10454 |
---|---|
該次作業在程序效能方面實現我的目標 | 學習單元測試 |
其他參考文獻 | https://blog.csdn.net/liuchuo/article/details/52144554 |
作業正文 | https://www.cnblogs.com/taotaochen/p/12463017.html |
作業要求
單元測試
數組中最大子數組的和。
用類/函數來實現
需求:希望返回 3 種信息
最大子數組的和
最大子數組開始的下標
最大子數組結束的下標
從文本文件中讀輸入的數據,熟悉文件操作, 文件有兩種數據
第一個數字:這次測試中有多少個數據, 數字后面是冒號。
后續數字: 每個數據的值,用逗號隔開
比如
文件內容:
17: -32, -10, 33, -23, 32, -12, 41, -12, 1, 3, 5, -98, 70, -21, 10, -9, 61
輸出
sum = 71
實現這個類 (MSA)
可以用 C++, Java, C#,Python class 等
類開始是空的,返回都是簡單的數值,例如 0.
測試包括測試文件讀入與計算(測試過程通過程序新建一個文件,內容可以為上述數字,測試完后得刪除文件)
設計單元測試,運行單元測試
開始:所有單元測試都失敗
改進程序,加入正確的邏輯,看到有單元測試通過,並且看到代碼覆蓋率的增加
重復, 直到所有單元測試都通過,代碼覆蓋率達到滿意的結果。
程序需要從當地push到遠程個人倉庫
參見 《構建之法》第二章單元測試的內容 以及
https://www.cnblogs.com/xinz/archive/2011/11/20/2255830.html
https://www.cnblogs.com/SivilTaram/p/software_pretraining_cpp.html
博客作業
回顧總結你在信息與計算科學專業前兩年的學習經歷和項目技能等,寫一篇關於你自己的簡歷,介紹你的技能,並針對未來准備從事的職業,評價你目前的技術、能力是否勝任,(個人能力的評價可以參考軟件工程師個人能力評價表https://www.cnblogs.com/xinz/p/3852177.html),並針對未來的職業發展方向,指明還有哪些技術、技能需要在后續大學一年的時間里需要加強的。
預習
請閱讀現代軟件工程講義:3 兩人合作,參見 https://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html
代碼
//以下代碼修改自CSDN柳婼PAT A1007
#include <iostream>
using namespace std;
int maxsum(int a[],int n){
int leftindex = 0, rightindex = n - 1, sum = -1, temp = 0, tempindex = 0;
for (int i = 0; i < n; i++) {
temp = temp + a[i];
if (temp < 0) {
temp = 0;
tempindex = i + 1;
} else if (temp > sum) {
sum = temp;
leftindex = tempindex;
rightindex = i;
}
}
if (sum < 0) sum = 0;
printf("最大子數組和 %d\n該子數組開始的下標 %d\n該子數組結束的下標 %d\n", sum, leftindex, rightindex);
return 0;
}
int main() {
int n;
scanf("%d", &n);
int v[100];
for (int i = 0; i < n; i++) {
scanf("%d", &v[i]);
}
maxsum(v,n);
system("pause");
return 0;
}
單元測試代碼
#include "stdafx.h"
#include "CppUnitTest.h"
#include"maxsum.cpp"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace maxsumTest
{
TEST_CLASS(UnitTest1)
{
public:
TEST_METHOD(TestMethod1)
{
// TODO: 在此輸入測試代碼
int data[] = { -32, -10, 33, -23, 32, -12, 41, -12, 1, 3, 5, -98, 70, -21, 10, -9, 61 };
Assert::AreEqual(111,maxsum(data, 17));
}
};
}