c语言电梯模拟程序

c语言电梯模拟程序

ID:34415953

大小:97.05 KB

页数:21页

时间:2019-03-05

c语言电梯模拟程序_第1页
c语言电梯模拟程序_第2页
c语言电梯模拟程序_第3页
c语言电梯模拟程序_第4页
c语言电梯模拟程序_第5页
资源描述:

《c语言电梯模拟程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、C语言电梯模拟程序一直以来我对电梯很感兴趣,起初认为用C语言不可能实现电梯模拟,需要多线程的支持,因此一直以来也没有想着做。最近数据结构习题书的这道题引起了我的注意,通过几天的努力终于实现了,先将程序的实现与大家分享出来。在这个程序关键是处理好电梯运行状态转换与乘客进出的同步进行。好在题目要求每次输入时要输入下一个乘客到来的时间,使得程序变简单了。通过一个模拟时钟,根据模拟时钟判断该运行哪个函数。以下是模拟时钟的代码。[cpp] viewplaincopy1.void DoTime(){  2.    //此函数用于模拟时钟   3.    while(1){  4.        i

2、f(Time>MaxTime)  5.            return;  6.        TestPeople();//两个始终都会被调用的函数   7.        Controler();   8.        struct Activity* p=activity.next;  9.        if(p==NULL){  10.            Time=MaxTime;  11.        }  12.        if(p&&Time>=p->time){//取出活动队头的,检测定时是否到了   13.            activity.n

3、ext=p->next;  14.            p->fn();  15.            free(p);  16.        }  17.        Time++;  18.    }  1.}  在这个先不管TestPeople()、Controler()是什么,其中activity是关键,它是一个链表在链表的头部是计时器时间最小的函数,根据模拟时钟判断是否调用这个函数以及删除这个节点。以下是Activity的具体定义。[cpp] viewplaincopy1.typedef struct Activity{  2.    int time;  3.   

4、 void(*fn)(void);  4.    struct Activity* next;  5.}Activity;  以及全局变量activity[cpp] viewplaincopy1.Activity activity={0,NULL,NULL};  下面的代码用于将一个函数加入activity链表,这是根据时钟值从小到大插入activity的。[cpp] viewplaincopy1.void AddAct(int time,void(*fn)(void)){//将一个活动加入定时器,时间到了会调用这个函数   2.    time=Time+time;         

5、        //这个函数参数必须是void,返回值也必须是void  3.    struct Activity* act;  4.    act=(struct Activity*)malloc(sizeof(struct Activity));  5.    act->next=NULL;  6.    act->fn=fn;  7.    act->time=time;  8.    struct Activity* p=&activity;  9.    while(p->next!=NULL){  10.        if(p->next->time>time)  11

6、.            break;  12.        p=p->next;  13.    }  14.    act->next=p->next;  15.    p->next=act;  16.}  一个简单的活动加入计时器。[cpp] viewplaincopy1.void Input(void){//输入人员信息,这个需要手动调用一次,之后就根据定时器调用了   2.    Person* p = (Person*)malloc(sizeof(Person));  1.    int infloor,outfloor,giveuptime,intertime;  2

7、.    while(1){  3.        printf("请输入用户的起始楼层:");  4.        scanf("%d",&infloor);  5.        printf("请输入用户的目标的楼层:");  6.        scanf("%d",&outfloor);  7.        printf("请输入用户的最长容忍时间:");  8.        scanf("%d",&giveuptime);  

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。