2017级面向对象程序设计寒假作业2
Deadline:2018.02.11 22:00 pm
第一次的寒假作业,开启了大家的寒假生活,转眼回到了“小学生作文题”的感觉。不知道是否也通过这次作业,将你的回忆时光拉回到了几年前或十年前,沉思回忆代替了纷扰的知识。很多同学回忆了小学、中学的课任老师,或书法、绘画的老师。无论他们是严厉还是宽容,是鸡汤还是淡定,都或多或少的影响或潜移默化改变着你。在经过一次时光超越后,书归正传,我们开启编码的作业。
一、Pintia小作业
注册pintia,填写昵称为“fzu+学号”,如:fzu031702101。登录后,在用户页面绑定学号:输入姓名、学号、验证码。
完成一道C/C++编程作业:题目地址,并将通过测试点的截图贴在下面一题博客的末尾。
二、编程题
一栋10层的大楼(楼层编号1-10),设有一台无限载重的电梯,初始时电梯停在1层。电梯移动1层的耗时为1,在某一层停靠的耗时为1(时间初始为0)。为了使得乘客等待的时间(电梯在目的层的停靠时刻 - 乘客发出请求时刻)总和最小,请你编写一个程序来进行电梯调度。
输入有5个请求,每个请求一行,格式为请求时刻 起始楼层数 去往方向
,其中方向为0
代表向上去往10层,为1
代表向下去往1层。
输出每次对应的决策,每一行的输出格式为xx时,停靠在x楼
。其中,“xx时刻”指的是在某层楼停靠的时刻,且不算入在该层的停靠时间。如:
- 当0时刻时,电梯此时在1层,输入有
0 1 0
,那么电梯从1层接客(1s)前往10层(9s),应输出10时,停靠在10楼
(1+9=10)。此时,该乘客等待时间为(10-0=)10。 - 当0时刻,电梯此时在1层,输入有
0 2 0
,那么电梯从1层前往2层(1s),接上乘客(1s),前往10层(8s),应输出10时,停靠在10楼
(1+1+8=10)。此时,该乘客等待时间为(10-0=)10s。
最后输出完成5个请求(所有乘客都到达目的地)后,各乘客的等待时间总和。
请自己设计5组测试用例,且具有一定代表性,用以验证程序是否是最小耗时。
编程语言选择C或C++都可以,但需要符合编码规范,且必须要有注释。要求在github上建立一个仓库,将本次作业代码提交到该仓库,并在博客开头给出仓库地址。注意:commit信息要遵守一定的git规范(可参看:git commit 规范指南),git必须使用命令行操作,不要使用github图形界面。
写一篇博客,在博客中描述在编码过程中,程序的不断优化过程。并列出一张表格,记录编写程序的代码行数、调试的bug数 、完成该次作业总耗时。
三、MOOC视频学习
在MOOC视频课程中找出一门或几门C++课程进行学习,至少包含15个课时,并给出选择该课程的理由和寒假学习计划(到几月几号,看完哪几章节)。要求将学习计划博客设置为置顶,并每日更新完成情况。之后将根据同学设定计划的完成情况来进行评分。
有关Git和Github的使用可阅读参考:
以及学长姐们的教程:
注:本次作业一共需要完成两篇随笔,代码及随笔作业皆不得抄袭。寒假作业共有5次,迟交5天内扣5分,不交0分,抄袭倒扣20分。