2017级面向对象程序设计 作业一

Deadline:2018.04.22 22:00 pm

一、MOOC在线课程学习

课程地址:http://www.icourse163.org/course/PKU-1002029030
学习前两章内容(从C到C++、类和对象基础),并完成相应的章节测验,然后将课程进度截图上传到蓝墨云班课

二、Pintia题目集

作业地址:https://pintia.cn/problem-sets/985353690216259584/problems

三、电梯调度编程题

经过了寒假的两次编程训练,大家大多对于电梯调度已有了自己的思路,但同学们的代码仍是C语言面向过程的风格。从本次作业开始,我们将以面向对象程序设计的角度,重新思考这个问题。

题目重述

注意:本次题目需求与寒假时有所不同!

一栋3层的大楼(楼层编号0-2),设有一台无限载重的电梯,初始时电梯停在0层。电梯移动1层的耗时为1在某一层停靠的耗时为1(时间初始为0)。电梯不允许未仆先知,必须在时间到了之后才能开始响应这条请求。
为了使得电梯完成接送所有乘客的运行时间最短,请你编写一个程序来进行电梯调度。

输入

输入文件的文件名为 input.txt ,其中:第一行为一个非负整数N,代表乘客的请求数量;接下来N行,描述了这N个请求的信息,格式为请求时刻 起始楼层数 去往楼层
保证请求时刻是递增的,且同一时刻同一楼层只会有一名乘客发出请求(也即不会出现同时且同楼层的多行输入)。

/*input example*/
2
0 1 2
1 2 1

输出

输出调度决策,输出文件的文件名为output.txt,其中:每一行的输出格式为时刻 停靠楼层。(初始时停在0层的状态不输出
注意:“时刻”指的是在某层楼停靠的时刻,且不算入在该层的停靠时间。

/*onput example*/
1 1
3 2
5 1

作业要求

1.新建一个C++项目(名字取为Elevator-scheduling)。

2.在这个项目里添加一个Elevator类,用来描述电梯。

该类的成员变量和成员函数如下:(作为参考)

member:

  • queue < int > destinationQueue; //目的地队列
  • int currentFloor; //当前位置
  • int indicator; //运行方向

function:

  • goToFloor() //前往队列首的楼层
  • stop() //停靠在当前楼层
  • updateDestinationQueue() //更新目的地队列

5.在这个项目里新建一个cpp文件,在其main里面读取文件输入、创建Elevator对象以及输出等等。(本次作业旨在熟悉c++的类和对象以及文件读写可暂不考虑调度算法

6.写一篇随笔,附上类图,并描述整个过程中碰到的所有困难(卡在哪些地方),以及解决的过程。要求在博客开头贴出项目的github地址。
(类图可参考北航同学的优秀作业:http://www.cnblogs.com/HansBug/p/8694939.html)

测试说明

本次代码依然需要上传Github。代码必须遵循一定的代码规范,要有注释,可读性尽可能好。

提交到Github上的项目均需要建立一个名字为BIN的文件夹,里面必须含有可执行文件(以exe为后缀),相关的依赖库,以及输入和输出文件。请注意以下两点:

  • 确保可执行文件的文件名为 elevator.exe,确保输入和输出文件的文件名为input.txt和output.txt。(注意:输入输出文件都需要采用相对地址,也即./output.txt
  • 一个示例组织目录如下所示(仅为示例,命名、文件数量等未必需要遵守):
     / Elevator-scheduling
         / main.cpp
         / elevator.cpp
         / elevator.h  
         ...
     / BIN
         / elevator.exe
         / input.txt
         / output.txt
         / Lib.dll (exe运行需要的动态链接库文件,可以没有)

注意:在下一次的作业中,将引入匿名互测

互测规则如下:

  1. 每人有初始分数10分,由测试同学在此基础上对被测方做出相应的加减分。
  2. 测试方对被测代码运行测试用例,测出一个bug扣1分,自己获得1分(被测方最多扣至0分,测试方最多加到满分15分)。测试方需要提供hack用例。
  3. 如果代码规范有值得称道的地方,加分(最多不超过5分)。测试方需要提供加分理由。
原文地址:https://www.cnblogs.com/easteast/p/8846446.html