2018面对对象_作业三

Address of github

C语言3电梯程序该如何运行:
1、明确乘客需求
2、针对乘客要求,写出相应调度函数
3、调度函数并在对应文件输出

拿到作业,发现是三部电梯,本来打算写出三个类,后来想想发现除了输出文件不同,调度函数几乎一样(除开只能特定楼层),于是乎最后只呈现出了一个电梯类,三个电梯变量。
此次C++代码编写过程中的困难及解决:
1、如何在三个不同的文件输出?输出文件不同时输出覆盖先前内容?
解决方法:①在输出函数传参时,增加参数name,若name==1则输出在output1.txt,以此类推。②发现了追加写入功能,问题解决。
2、如何决策某位乘客该进入何部电梯?
解决方法:如果ask_floor and aim_floor均为偶数或一为1一为偶数(进入3号电梯),或全为奇数(进入1号电梯),否则进入2号电梯。(该方法,我认为并不优,个人感觉除了楼层判断,还应该根据三部电梯相对于该请求的距离、之后的移动来进行调度,才可以说是较为合理,而非简单地如上述判断,但能力有限,思考如何实现后无果)
3、电梯调度的时候,如何相应对应请求(由2的方法得到对应电梯需要相应的请求,开始模拟)
解决方法:对于已在电梯的乘客,优先相应最先进入电梯的乘客的请求。期间若经过其他请求楼层且去往方向与电梯运行方向一致则接送,否则先忽略,当该乘客到达目的地后,继续相应其次进入电梯的乘客的请求,以此类推直到响应完成。(这是我原先想出来的版本的退化,一开始想说把如何接送乘客推入堆,然后响应堆中最大(电梯向上运行)或最小(电梯向下运行)的请求,而运行原则同上,即只相应当前,如若出现更大或者更小的楼层,先忽略,但会推入堆之后响应,之后以此类推)
4、由于不能未卜先知,电梯在无请求的时刻该如何运行?
解决方法:决定让电梯滞留在先前抵达楼层,不作过多移动。

小结:
3个电梯的调度,互相之间如何配合,我认为确实超出了我当下的能力范围,只用纸笔运算,在小数据时尚可尝试出较优调度,当数据量一旦庞大,电梯与电梯之间的配合,着实让人烦躁,可以说怎么让3部电梯相互配合以到达较优的组合仍需不断构想猜测。

原文地址:https://www.cnblogs.com/FormerAutumn/p/9030634.html