面向对象--作业三

Github

<<>>

3电梯调度-C++

作业写得很烧脑啊,我深得体会

来看看大概是怎样一个思路

  • 首先将所有数据输入

  • 当输入请求的总数不等于电梯载客服务完成总次数,进入循环

    • 1.在程序内部根据时间来判断是否给电梯传输请求指令(不能未卜先知)
    • 2.当请求指令数不为0时,唤起调度(分配任务)
      • 调度:获取电梯1,2,3的状态
      • 根据判定将该请求分配给电梯
      • 这个判定完全是编写者的意愿来的
        • 比如说,第一,如果电梯空闲,而且请求能接(由于限制了电梯能到的层数),就分配给这个电梯
        • 第二,电梯接这个请求更方便,电梯从1楼去5楼,3楼有请求往上走,这个电梯顺道就载他上去呗
        • 第三,前面两种分配方案都没解决,就进行强制分配,分配给最少任务的电梯(当然不一定最优)
    • 3.分配完后,电梯1~3分别运行1次(运行)
      • 判断有没有到请求层->请求层有没有人在等->停下载人(停:true)
      • 判断有没有到目的层->停下放人(停:true)|| 该层有没有请求方便接(比其他电梯优先到,抢客)->停下载人(停:true)
      • 上人下人,服务次数的参数计算
      • 有没有停 || 根据自己所带的任务去看自己向上走还是向下走
      • 等待(输出) || 上下楼 时间+1
整个过程重复1~3

迎难而上

  • 一开始写,类里面的参数基本上都设为了私有成员,结果在调用的时候发现尴尬了

    • 私有成员用起来极不方便,尤其是私有成员变得越来越多的时候,写的方法要比私有参数多得多
    • 更惨的是有的私有成员是个类的时候,写方法去调用类的方法,为1个类写的调用方法是类的功能数倍
    • 类中类最多的时候要4个不同的变量,调用起来简直喷血
    • 一个Elevator类最多的时候有70+方法,看的我是眼花缭乱,再往里面加方法的时候实在是晕
  • 解决:把几个不太重要的成员设为公有,并且类中类也基本上设为公有,虽然还是有很多

    1378298-20180513200700276-73602194.png
  • 写到调用,运行电梯(核心算法)代码段的时候,面对诺大的代码块,很容易突然忘了自己要做啥。。。

  • 方案:要写核心算法,先打草稿,想到什么好方法,发现了什么BUG,赶紧写到纸上,(想到了个好方法,突然忘了要怎么实现,感觉错过了1个亿),这个还可以避免各种脑残问题,比如,突然想到了一个很好的方法,然后使劲写,写完了才发现,这段代码并没有什么用,甚至和前面写的都搭不上边,因为开始太激动,没考虑到哪些是最基本的条件,从而使这段代码变得毫无意义

  • 感觉queue不太好用,没有我想要的功能,而且用起来不那么方便,(为什么呢?参照上面最后一句话 o_o!!!)

  • 方案:犹豫了一下,还是自己写一个冒牌的que吧,至少我对自己写的que了解度MAX(不想删掉那么长的代码),想要什么功能都可以自己加,虽然只能存整型变量,但够用了。后来发现,自己写的用的很爽。

    1378298-20180513200711384-515143189.png
  • 写的代码BUG很难找就不说了,但是,电梯运行是否正常却难以找到出错的证明

  • 方案:不知道其他人是不是也这样搞的,我弄了个图形输出,下面再附上各种参数说明,任务被哪个电梯接了,电梯现在某层,去哪层,当前时间多少,载客,方向,服务次数,每层此时等待人数等。找BUG?,特方便!

    1378298-20180513201718860-398406806.png
  • 代码写太长了,编译器开始各种抽搐。。。(Dev C++ ver-5.9.2)

    • 很容易出现不能折叠代码块的现象,那么长的代码,不能折叠,很伤
    • 突然代码被清空(显示不全)几百行的就显示几十行,几行
    • 保存,编译,运行代码的时候很容易跳出Dev已停止工作。。。还好代码都没事
  • 方案:坚持写完了,然后,换编译器吧

转载于:https://www.cnblogs.com/M031702113/p/9033238.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值