面向对象--作业三

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+方法,看的我是眼花缭乱,再往里面加方法的时候实在是晕

  • 解决:把几个不太重要的成员设为公有,并且类中类也基本上设为公有,虽然还是有很多

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

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

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

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

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

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

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

    • 很容易出现不能折叠代码块的现象,那么长的代码,不能折叠,很伤

    • 突然代码被清空(显示不全)几百行的就显示几十行,几行

    • 保存,编译,运行代码的时候很容易跳出Dev已停止工作。。。还好代码都没事

  • 方案:坚持写完了,然后,换编译器吧

posted @ 2018-05-13 21:00  梦幻魅羽  阅读(152)  评论(1编辑  收藏  举报