Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 5e4da16cb8
Fetching contributors…

Cannot retrieve contributors at this time

44 lines (33 sloc) 2.466 kb

为了方便大家编译和调试,推出了 ascii 版的模拟系统,该系统与 Qt 界面的系统类似,每 1 单位时间刷新一场景, 现在的单位时间是 0.2 秒。由于调用的是 Linux/Gnu 系操作系统的 clear 和 sleep 函数,因此 windows 系统 下无法正常的工作,见谅(或者谁有空写一下。。)。

在此将关于 ascii 界面程序的编译和算法设计相关事项阐述一下:

编译和运行

编译直接在根目录下 $ make 就行了,会生成一个叫做 ascii 的可执行文件。这个程序的主函数在 Sources/ascii.cpp 中,从主函数中可以见到,为了方便,楼层数固定为 10,电梯固定为 4 架,泊松参数为 0.02, 程序持续 100 个单位时间,在没有命令行参数的情况下,运行程序还要求输入算法的名字。如果需要指定参数可以用命令行参数指定 ./ascii 10 4 0.02 100 FCFS。不过。。。这个功能还没做。。先忍一忍或者谁写一下。。

插入算法

插入算法的顺序的基本方法还是和本目录下的《API-说明》中叙述的一样,只是为了配合 main 函数,需要在 Sources/ascii.cpp 中添加一个分支。

具体的步骤是

  • 按照《API-说明》完成算法设计
  • Sources/ascii.cpp 中的 Control() 函数中增添分支,代码片段如下,相信看注释就懂了
void Control() {
    if (Emulator::elevatorType == "PFCFS") {
        Controller::Fcfs();
    } /* else if (Emulator::elevatorType == "costflow") {
      /*  Controller::costflow();
      /*  
      /* } */
}
  • 更新 Makefile

打开根目录下的 Makefile

ascii: Sources/ascii.cpp Sources/elevator.cpp Sources/emulator.cpp Sources/fcfs.cpp Sources/passenger.cpp \
  Sources/floor.cpp Sources/PoissRand.cpp  Headers/controller.h Headers/elevator.h \
  Headers/emulator.h Headers/fcfs.h Headers/floor.h Headers/instruction.h Headers/models.h Headers/internlib.h \
  Headers/passenger.h Headers/PoissRand.h Sources/order.cpp Sources/Print.cpp /* 在这里添加新创建的文件, 如 xx_algorithm.cpp */

  $(CC) $(CFLAGS) $(LIBS) -o ascii Sources/ascii.cpp Sources/elevator.cpp Sources/emulator.cpp Sources/fcfs.cpp Sources/passenger.cpp \
  Sources/floor.cpp Sources/PoissRand.cpp  Sources/order.cpp Sources/Print.cpp
  /* 在这里添加新创建的需要编译和链接的文件, 如 xx_algorithm.cpp */
  • $ make, 执行,就能够看见输出了~
Jump to Line
Something went wrong with that request. Please try again.