軟件工程第三次作業


軟工第三次作業

作業要求的鏈接 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));

		}

	};
}


免責聲明!

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



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