• 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分)。测试方需要提供加分理由。
  • 相关阅读:
    【记录】20060430 11:30:00 本Blog访问量突破100000 !
    ESFramework介绍之(24)―― 日志记录IEsbLogger
    ESFramework介绍之(20)―― 插件自动升级
    ESFramework介绍之(21)-- Tcp组件接口ITcp介绍
    ESFramework介绍之(17)―― 支持漫游用户和跨区域功能请求
    python标准库学习9
    python标准库学习5 bisect — Array bisection algorithm
    C++中四种显示类型转换总结
    BeautifulSoup学习笔记
    jdbc连接数据库(水文)
  • 原文地址:https://www.cnblogs.com/easteast/p/8846446.html
Copyright © 2020-2023  润新知