首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >功能模拟单电梯运动

功能模拟单电梯运动
EN

Code Review用户
提问于 2016-02-09 05:39:11
回答 1查看 1K关注 0票数 1

我正在编写模拟单台电梯运动的代码。这对我来说是个问题,而且很简单,因为用例得到了正确的解释。因此,该问题包含以下数据:

inputFloors :所有楼层的电梯都应该到。{5,2,9,3,8,1} currentFloor :电梯站立/用户进入电梯的当前楼层。6方向:电梯运动方向,如上或下。

现在,由于用户是在6楼进入,所以电梯的路线应该是5,3,2,1,8,9。这意味着电梯应该先从较小的楼层降下来,然后按升序上升。类似地,如果用户想要上升,那么路由应该是8、9、5、3、2、1。

我编写了这段代码,在我看来,它是一个非常简单的用例。但我想看看有没有更好的方法。我正在整理我的c++基础知识,所以这是我能想到的最好的解决方案。

我的守则:

代码语言:javascript
复制
std::vector<int> singleElevatorSystem (int inputFloors[], int size, int currentFloor, string direction) {
  std::vector<int> High, Low; 

  for (int i = 0; i < size; i++) {
    if (currentFloor < inputFloors[i]) {
      High.push_back (inputFloors[i]);
    } else if (currentFloor > inputFloors[i]) {
      Low.push_back (inputFloors[i]);
    }
  }

  std::sort (High.begin(), High.end());
  std::sort (Low.begin(), Low.end());

  if (direction.compare("UP") == 0) {
    High.insert(High.end(), Low.rbegin(), Low.rend());
    return High;
  } else if (direction.compare("DOWN") == 0) {
    std::reverse (Low.begin(), Low.end());
    Low.insert (Low.end(), High.begin(), High.end());
    return Low;
  }
}

int main () {
  int inputFloors[] = {5, 2, 9, 3, 8, 1};
  int currentFloor = 6;
  //string direction("UP");
  string direction("DOWN");

  std::vector<int> outputFloors = singleElevatorSystem (inputFloors, 6, currentFloor, direction);
  std::cout << "Elevator will stop at requested floors in sequence : ";
  for (int i = 0; i < 6; i++) {
    std::cout << outputFloors.at(i) << "  ";
  }

  std::cin.get();
  return 0;
}

我硬编码数组的大小和当前的楼面值。

有任何评论或更新吗?

EN

回答 1

Code Review用户

发布于 2016-02-09 05:53:09

作为一项C++学习练习,在本例中,创建Elevator类将使您受益。使它成为一个类,它将当前层和方向作为数据成员(这些是电梯的当前状态),并将输入层作为输入并返回输出层的函数PlanRoute

H文件将如下所示:

代码语言:javascript
复制
class Elevator {
public:
  Elevator();
  void setCurrentFloor(int currentFloor);
  void setDirection(bool goingDown);
  std::vector<int> planRoute(const std::vector<int>& inputFloors)
private:
  bool goingDown;
  int currentFloor;
}
票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/120085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档