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+方法,看的我是眼花缭乱,再往里面加方法的时候实在是晕
-
解决:把几个不太重要的成员设为公有,并且类中类也基本上设为公有,虽然还是有很多
![](https://images2018.cnblogs.com/blog/1378298/201805/1378298-20180513200700276-73602194.png)
-
写到调用,运行电梯(核心算法)代码段的时候,面对诺大的代码块,很容易突然忘了自己要做啥。。。
-
方案:要写核心算法,先打草稿,想到什么好方法,发现了什么BUG,赶紧写到纸上,(想到了个好方法,突然忘了要怎么实现,感觉错过了1个亿),这个还可以避免各种脑残问题,比如,突然想到了一个很好的方法,然后使劲写,写完了才发现,这段代码并没有什么用,甚至和前面写的都搭不上边,因为开始太激动,没考虑到哪些是最基本的条件,从而使这段代码变得毫无意义
-
感觉queue不太好用,没有我想要的功能,而且用起来不那么方便,(为什么呢?参照上面最后一句话 o_o!!!)
-
方案:犹豫了一下,还是自己写一个冒牌的que吧,至少我对自己写的que了解度MAX(不想删掉那么长的代码),想要什么功能都可以自己加,虽然只能存整型变量,但够用了。后来发现,自己写的用的很爽。
![](https://images2018.cnblogs.com/blog/1378298/201805/1378298-20180513200711384-515143189.png)
-
写的代码BUG很难找就不说了,但是,电梯运行是否正常却难以找到出错的证明
-
方案:不知道其他人是不是也这样搞的,我弄了个图形输出,下面再附上各种参数说明,任务被哪个电梯接了,电梯现在某层,去哪层,当前时间多少,载客,方向,服务次数,每层此时等待人数等。找BUG?,特方便!
![](https://images2018.cnblogs.com/blog/1378298/201805/1378298-20180513201718860-398406806.png)
-
代码写太长了,编译器开始各种抽搐。。。(Dev C++ ver-5.9.2)
-
很容易出现不能折叠代码块的现象,那么长的代码,不能折叠,很伤
-
突然代码被清空(显示不全)几百行的就显示几十行,几行
-
保存,编译,运行代码的时候很容易跳出Dev已停止工作。。。还好代码都没事
-
方案:坚持写完了,然后,换编译器吧
posted @
2018-05-13 21:00
梦幻魅羽
阅读(
152)
评论()
编辑
收藏
举报