用C++模拟电梯运行

首先假设有6个楼层。最初,电梯在顶层,先实现电梯从顶层到第一层的过程:

#include <iostream>#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
#include<windows.h>
using namespace std;

struct node{int x,y;int color;};
HANDLE Output=GetStdHandle(STD_OUTPUT_HANDLE);
HANDLE Input=GetStdHandle(STD_INPUT_HANDLE);
void SetCursor(int x,int y){
COORD cd={x,y};
SetConsoleCursorPosition(Output,cd);
}
int main()
{
int floor = 6;
for(int i=1; i<17; i++)
{
if( i%3 == 1)
{
SetCursor(1,i);
cout << floor;
floor--;
}

}
bool bot = true;
int position = 1;
while(bot)
{
SetCursor(3,position);
cout << "■" << endl;
Sleep(500);
SetCursor(3,position);
cout << " " << endl;
if(position == 16)
{
bot = false;
SetCursor(3,position);
cout << "■" << endl;
}
position++;
}
//cout << "■" << endl;
return 0;
}

这时还没有加入人。

下面实现单人电梯模型,人和电梯在的楼层都是随机的,人想到达的楼层也是随机的。

单人电梯模型:

#include <iostream>
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
#include<windows.h>
#include <cstdlib>
using namespace std;

struct node{int x,y;int color;};
HANDLE Output=GetStdHandle(STD_OUTPUT_HANDLE);
HANDLE Input=GetStdHandle(STD_INPUT_HANDLE);
void SetCursor(int x,int y){
COORD cd={x,y};
SetConsoleCursorPosition(Output,cd);
}
int main()
{
int floor = 6;
for(int i=1; i<17; i++)
{
if( i%3 == 1)
{
SetCursor(1,i);
cout << floor;
floor--;
}

}
srand(time(0));
int prompt = 17;
const int nort = 500;
const int slowt = 1000;
int elevator = (rand()%6) + 1;
int perx = (rand()%6) + 1;
int pery = (rand()%6) + 1;
while(perx == pery)
{
int perx = (rand()%6) + 1;
int pery = (rand()%6) + 1;
}
int position = 19 - 3*elevator;
int elex = 19 - 3*perx;
int eley = 19 - 3*pery;
bool reachx = false;
bool reachy = false;
int state = 0;
SetCursor(3,prompt);
cout << "elevator is on " << elevator << " floor";
prompt++;
SetCursor(3,prompt);
cout << perx << " floor wants to go to " << pery << " floor";
prompt++;
while(!reachx)
{
if(position < elex)
state = 1;
else
state = 2;
SetCursor(3,position);
cout << "■" << endl;
Sleep(nort);
SetCursor(3,position);
cout << " " << endl;
if(state == 1)
position++;
else
position--;
if(position == elex)
{
reachx = true;
SetCursor(3,position);
cout << "■" << endl;
Sleep(slowt);
SetCursor(3,position);
cout << " " << endl;
}
}
SetCursor(3,prompt);
cout << "has reached " << perx << " floor";
prompt++;
while(!reachy)
{
if(position < eley)
state = 1;
else
state = 2;
SetCursor(3,position);
cout << "■" << endl;
Sleep(nort);
SetCursor(3,position);
cout << " " << endl;
if(state == 1)
position++;
else
position--;
if(position == eley)
{
reachy = true;
SetCursor(3,position);
cout << "■" << endl;
}
}
SetCursor(3,prompt);
cout << "has reached " << pery << " floor";
prompt++;
SetCursor(1,20);
return 0;
}

时间: 2024-07-31 23:20:21

用C++模拟电梯运行的相关文章

自己动手C#模拟电梯的运行V1.0

电梯调度有很多种模式,参见http://www.cnblogs.com/jianyungsun/archive/2011/03/16/1986439.html 1.1先来先服务算法(FCFS) 先来先服务(FCFS-First Come First Serve)算法,是一种随即服务算法,它不仅仅没有对寻找楼层进行优化,也没有实时性的特征,它是一种最简单的电梯调度算法.它根据乘客请求乘坐电梯的先后次序进行调度.此算法的优点是公平.简单,且每个乘客的请求都能依次地得到处理,不会出现某一乘客的请求长期

[原]用WebBrowser组件模拟人工运行搜索引擎自动点击搜索结果的实验

本代码只是业余时间无聊写着试试,用WebBrowser组件模拟人工运行搜索引擎自动点击搜索结果的实验 这是网络中盛传的提高搜索引擎点击率的一种方式,当然属于作弊,不推荐各位使用.另外这种方式的性能不佳,往往因为网络及本地机器的原因中途当机.当然如果只是写这游戏一下那是无妨.这里只是提供了其中的一种原理,方法还有很多.如果此方式继续优化详细写下去的话可能需要涉及到vpn定时更改ip地址到问题,当然现在即便是vpn也有办法逆向找到原始的ip地址. 代码示例如下: using System;using

使用Qemu模拟Cortex-A9运行U-boot和Linux

转载: http://blog.chinaunix.net/uid-20273473-id-3267337.html 我的开发环境: Ubuntu-12.04  所有软件包为最新 1. 安装GNU工具链 sudo apt-get insatll gcc-arm-linux-gnueabi sudo apt-get insatll g++-arm-linux-gnueabi 安装完成后会在 /usr/arm-linux-gnueabi/ 目录下生成库文件.头文件等. 我安装的GCC版本为: arm

Servlet+AJAX实现的模拟电梯调度

需求产生: 大三下学期天天在学校的同一栋教学楼上课,每天要等四次电梯,有次等电梯无聊了,就想到电梯的运行逻辑该如何用程序来表达呢? 问题描述: 大学的那栋楼有21层,不过在页面中画21层有点密,所以只画了9层: 同时有三座电梯等待调度: 按钮分为楼层按钮和电梯内按钮,电梯内按钮有楼层数字和关门按钮: 运行的要求: 1.电梯空闲时,电梯内按钮被点击,对应按钮被点亮,需要按关门键自动运行到最近的楼层: 2.电梯正在运行过程中,电梯内按钮被点击,如果离电梯更近,需要自动更改电梯目的停靠楼层为新添加的请

skyeye安装+arm-elf-gdb安装+模拟s3c44b0x+运行ucos4skyeye

[如果要参考,请先全部看完,这里只是记录我的两天的过程] skyeye安装:ubuntu12.0432 llvm2.8 skyeye1.3.3 http://blog.chinaunix.net/uid-26963688-id-3267351.html 其中有几处是错误的,修改后的不带图的过程如下: Ubuntu 12.04 LTS 32bit 1G DRAM 2 cores + skyeye-1.3.3_rel.tar.gz 开发编译环境准备: 首先安装skyeye的依赖包 sudo apt-

电梯运行将参加吧vjvgjfkfcjg

http://www.l99.com/EditText_view.action?textId=7195422 http://www.l99.com/EditText_view.action?textId=7195573 http://www.l99.com/EditText_view.action?textId=7195863 http://www.l99.com/EditText_view.action?textId=7196572 http://www.l99.com/EditText_vi

js模拟电梯操作

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 <style type="text/css"> 7 *{ 8 margin:0; 9 padding:0; 10 } 11 #box{ 12 width:100px; 13

Pair Project:电梯控制程序

12061160刘垚鹏 & 12061166宋天舒 1.1结对编程的优缺点结对编程相对于个人编程有很多优点.首先,督促作用,在讨论过程中能够很快投入工作,为了不耽误对方时间,我们会尽快完成各自的任务:第二,节约时间,相互交流,能够更快的确定算法方案,比起一个人苦思冥想要来的快得多:第三,提高效率,一些简单的unit,一个人能够很简单的完成就可以分给不同的人去做:对于核心的unit,比如说此次项目电梯调度的算法部分,这是一个核心的部分,需要我们共同讨论,经过讨论后确定较优的方案再去实现:或者在遇到

java面试题大合集(开发者必看)

前言 本文来自百度网络的一篇文章,由于没有答案,现在整理了一些比较好的回答和好的博客,可以自己扩展思路,如果大家有一下面试题的更好的答案,欢迎在评论区留言.以上全部来自网络!此外,我的微信公众号将每日分享下面面试题相关的知识点总结干货,欢迎关注微信公众号:好好学java! 文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 基本概念 1.操作系统中 heap 和 stack 的区别 堆:堆空间一般由程序员来分配,可以由垃圾回收机制来回收.一般