• 面向对象--作业三


    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已停止工作。。。还好代码都没事

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

  • 相关阅读:
    2015.7.23 开始记录一些学习情况
    poj 3299 java
    在线编辑~
    MATLAB加载数据来绘图《原创翻译Loading Data into MATLAB for Plotting》
    【转载】matlab的reshape函数的作用
    (转载)CUDA 6.0 安装及配置( WIN7 64位 / 英伟达G卡 / VS2010 )
    简单文本处理
    【转】CUDA与二维动态数组
    《转载》 cpp文件调用CUDA .cu文件实现显卡加速相关编程
    cuda_opencv之向量相加
  • 原文地址:https://www.cnblogs.com/M031702113/p/9033238.html
Copyright © 2020-2023  润新知