计算与软件工程作业三
计算与软件工程作业三
作业要求 | 第三周作业 |
---|---|
课程目标 | 单元测试 自我总结 |
作业帮助 | 了解单元测试的使用方法与功能 审视自身技能 |
参考文献 | 构建之法 单元测试 |
作业正文
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网页设计、数据库。语言学习基本停留在基础阶段,没有深入的研究,能够解决一些小问题,写一些小程序,千行以内,并没有在什么大项目上实践过,数据结构也仅仅在理论层面有所理解,机试能力仍不足。目前仍在学习中,学习计算机四门基础科目理论,打下基础,将来打算从事计算机相关行业。