急急!麻烦大家帮我把这个程序改一下,使这个能够正常运行,谢啦!

vampire_3 2009-06-17 11:19:04
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define datatype int
#define MaxSize 9
#define ok 1
#define OVERFLOW -1
typedef struct LQ//队列,结构体定义
{
int data;
int num;
int curtime;
int count;
struct LQ *next;
}LQ,*Que;
typedef struct {
Que front;
Que rear;
}SeQueue;
datatype Mg[MaxSize];
int Init_Queue(SeQueue *q)//初始化队列Q
{
q->front=q->rear=(Que)malloc(sizeof(LQ));
if(!q->front) exit (OVERFLOW);
q->front->count=0;
return ok;
}
int DestoryQueue(SeQueue *q)
{
while(q->front)
{
q->rear=q->front->next;
free (q->front);
q->front=q->rear;
}
return ok;
}
int In_Queue(SeQueue *q,datatype x,datatype y,datatype z)//入队列
{
int i=1,j;
if(q->front->count>=6)
{
printf("队列已满无法插入!\n");
return 0;
}
else
{
q->front->data=x;
while(i<=y)
{
q->front->num=i;
i++;
}
q->front->curtime=z;
j=q->front->count;
j++;
return 1;
}
}
int Out_Queue(SeQueue *q, int *x,int *y,datatype *z)//出队列
{
int i;
if(q->front->count==0)
{
printf("队列已空无数据元素出队列!\n");
return 0;
}
else
{
*x=q->front->data;
*y=q->front->num;
*z=q->front->curtime;
i=q->front->count;
i--;
return i;
}
}
datatype Front_Queue(SeQueue *q,datatype x)//取队列元素
{
if(q->front->count=0)
{
printf("队列已空无数据元素可取!\n");
return 0;
}
else
{
x=q->front->data;
return x;
}
}
int up(int floor,int Mg[MaxSize],int Rg[MaxSize])//上楼
{
int time=0,time2;
int c,b=0,d;
while(floor <=5)
{
c=Mg[b];
d=Rg[b];
if(d>c)
printf("电梯正在往上运行,乘客请等待");
else if(c!=floor&&d!=floor)
printf("电梯正在运行");
else if(c==floor&&d!=floor)
{
printf("目的楼层已经到了,乘客请出电梯");
time=time+20*(d-c);
printf("\t\t%d 时刻,电梯到达第%d层\n",time,floor);
time2=time2+50;
}
else if(c!=floor&&d==floor)
{
printf("楼层已到,请乘客入电梯");
time2=time2+50;
}
else
{
printf("目的楼层已经到了,相关乘客请出电梯\n");
time=20*(d-c);
printf("\t\t%d 时刻,电梯到达第%d层\n",time,floor);
time2=time2+50;
printf("楼层已到,相关乘客请入电梯\n");
}
b++;
floor++;
time=time2;
}
return b;
}
void down(int b,int Mg[MaxSize],int Rg[MaxSize])//下楼
{
int time,time2,floor=5,c,d;
while(floor>=1)
{
c=Mg[b];
d=Rg[b];
if(d <c)
printf("电梯正在往下运行,乘客请等待\n");
else if(c!=floor&&d!=floor)
printf("电梯正在运行\n");
else if(c==floor&&d!=floor)
{
printf("目的楼层已经到了,乘客请出电梯\n");
time=time+20*(d-c);
printf("\t\t%d 时刻,电梯到达第%d层\n",time,floor);
time2=time2+50;
}
else if(c!=floor&&d==floor)
{
printf("楼层已到,请乘客入电梯\n");
time2=time2+50;
}
else
{
printf("目的楼层已经到了,相关乘客请出电梯\n");
time=20*(d-c);
printf("\t\t%d 时刻,电梯到达第%d层\n",time,floor);
time2=time2+50;
printf("楼层已到,相关乘客请入电梯\n");
}
b++;
floor--;
time=time2;
}
}
void paixu(datatype Mg[],int n)
{
int i,j,temp;
for(i=1;i <=n;i++)
for(j=i+1;j <=n;j++)
{
if(Mg[i]>Mg[j])
{
temp=Mg[i];
Mg[j]=temp;
Mg[i]=Mg[j];
}
}
}
int main()
{
int *p,*t,*r;
LQ *e,*f,*d;
int i,x,y,z,flag=1,m,n,c,b,k=1,fg=1;
int j=1;
int floor=1;
int Mg[MaxSize],Rg[MaxSize];//记录到达的楼层信息
SeQueue *from,*go;
int time1;
int state=1;
printf("\t\t *****************************************************\n");
printf("\t\t * *\n");
printf("\t\t * *\n");
printf("\t\t * 电梯模拟程序 *\n");
printf("\t\t *****************************************************\n");
printf("电梯在本垒层候命\n");
printf("此电梯的层数为5\n");
printf("电梯的承载最大为5人\n");
while(flag)
{
printf("是否有人要进入此电梯,是的输入1,否则输入0\n");
scanf("%d",&i);
if(i==0)
{
flag=0;
printf("over\n");
printf("谢谢光顾\n");
}
else
{
while(fg)
{
printf("请输入你所在的楼层\n");
scanf("%d",&x);
printf("此人向电梯发送的时间\n");
scanf("%d",&z);
printf("请输入你的最大容忍时间是\n");
scanf("%d",&time1);
In_Queue(from,x,y,z);
printf("请输入你要到达的楼层\n");
scanf("%d",&n);
Init_Queue(from);
Init_Queue(go);
In_Queue(go,n,y,z);
fg=In_Queue(go,n,y,z);
In_Queue(from,n,y,z);
fg=In_Queue(from,n,y,z);
Mg[j-1]=n;
Rg[j-1]=x;
j++;
y++;
k=j;
d=from->front->next;
from->front=d;
e=go->front->next;
go->front=e;
}
}
}
paixu(Mg,y);
paixu(Rg,y);
while(k!=0)
{
Out_Queue(go,p,t,r);
printf("第%d名乘客到%d层\n",*p,*t);
k=Out_Queue(go,p,t,r);
f=go->front->next;
go->front=f;
}
while(state)
{
printf("如果你想结束电梯的运行请输入0,否则输入1\n");
scanf("%d",&m);
state=m;
printf("电梯准备运行\n");
up(floor,Mg,Rg);
b=up(floor,Mg,Rg);
down(b,Mg,Rg);
}
printf("欢迎乘坐该电梯\n");
return ok;
}

...全文
51 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
短腿的兔子 2009-06-18
  • 打赏
  • 举报
回复
mark
明天看
caremsi 2009-06-18
  • 打赏
  • 举报
回复
看看先
liushac 2009-06-18
  • 打赏
  • 举报
回复
帮你顶下
koulongfei 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 luojie1990go 的回复:]
兄弟们我没时间了,麻烦谁快点帮我改一下这个程序!非常感谢!
[/Quote]
我编译连接了,有好多个警告,运行后会出现问题,你处理下那几个警告.
vampire_3 2009-06-18
  • 打赏
  • 举报
回复
兄弟们我没时间了,麻烦谁快点帮我改一下这个程序!非常感谢!
want_to_be_leader 2009-06-18
  • 打赏
  • 举报
回复
很长!考完试再看!
liliangbao 2009-06-17
  • 打赏
  • 举报
回复
帮顶~

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧