c++停车场问题谁能帮我写一下啊

author author     2023-03-22     528

关键词:

那位高手能给我一个 分就这些 最好有注释

问题描述
设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口停放(最先到达的第一辆车放在停车场最里面)。如果停车场已经放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在它之后进入停车场的车必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进入停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。编制程序模拟该停车场的管理。
基本要求
(1) 输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应缴纳的费用和它在停车场内停留的时间。
(2) 汽车模拟输入格式为:(到达/离去,汽车牌照号码,到达/l离去的时刻)
(3) 根据输入命令来决定车辆的进入或离开。
实现提示
停车场只有一个大门,因此可以用栈来模拟,而当栈满后,继续来到的车辆只能停在便道上,可知这可以用一个队列来模拟,先排队的车辆先离开便道进入停车场。由于排在停车场内的车辆可以离开停车场,并且要求在依原来的次序进入停车场,因此在一个栈和一个队列的基础上,还需要有一个地方(车辆规避所)保存为了让路离开停车场的车辆,很显然要用栈来模拟,因此要用到两个栈和一个队列。

参考技术A 我写的这个是C的,用C++的话原理一样,就是申请存储空间改成new,scanf、printf改成cin、cout就行了。
具体实现方法是用2个栈(停车场)和1个队列(便道)的操作来实现的,你好好研究一下吧!
#include <stdio.h>
#include <stdlib.h>

#define MaxNum 5
#define WaitingNum 3
#define Price 2

typedef struct

int CarNum[MaxNum]; //车牌号
int CarTime[MaxNum]; //进场时间
int top;
SqStack;
typedef struct

int CarNum[WaitingNum];
int front, rear;
SqQueue;

void InitStack(SqStack * &s)

s = (SqStack *)malloc(sizeof(SqStack));
s->top = -1;


int StackEmpty(SqStack *s)

return(s->top == -1);


int StackFull(SqStack *s)

return(s->top == MaxNum - 1);


int Push(SqStack * &s, int Num, int Time)

if(s->top == MaxNum - 1)
return 0;
s->top++;
s->CarNum[s->top] = Num;
s->CarTime[s->top] = Time;
return 1;


int Pop(SqStack * &s, int &Num, int &Time)

if(s->top == -1)
return 0;
Num = s->CarNum[s->top];
Time = s->CarTime[s->top];
s->top--;
return 1;


void DispStack(SqStack *s)

int i;
for(i = s->top; i >= 0; i--)
printf("%d ", s->CarNum[i]);
printf("\n");


void InitQueue(SqQueue * &q)

q = (SqQueue *)malloc(sizeof(SqQueue));
q->front = q->rear = 0;


int QueueEmpty(SqQueue *q)

return(q->front == q->rear);


int QueueFull(SqQueue *q)

return((q->rear + 1)% WaitingNum == q->front);


int EnQueue(SqQueue *q, int e)

if((q->rear + 1) % WaitingNum == q->front)
return 0;
q->rear = (q->rear + 1) % WaitingNum;
q->CarNum[q->rear] = e;
return 1;


int DeQueue(SqQueue * &q, int &e)

if(q->front == q->rear)
return 0;
q->front = (q->front + 1) % WaitingNum;
e = q->CarNum[q->front];
return 1;


void DispQueue(SqQueue *q)

int i;
i = (q->front + 1) % WaitingNum;
printf("%d", q->CarNum[i]);
while((q->rear - i + WaitingNum) % WaitingNum > 0)

i = (i + 1) % WaitingNum;
printf("%d", q->CarNum[i]);

printf("\n");


void main()

int comm;
int Num, e1, Time, e2;
int i, j;
SqStack *St, *St1;
SqQueue *Qu;
InitStack(St);
InitStack(St1);
InitQueue(Qu);
while(true)

printf("请选择车辆状态:\n1.车辆到达\n2.车辆离开\n3.停车场当前停车情况\n4.候车场当前停车情况\n0.退出程序\n");
scanf("%d", &comm);
if(comm == 1 || comm == 2)

printf("请分别输入(到达或离开的)车辆编号和(进场或入场)时间:\n");
scanf("%d%d", &Num, &Time);

switch(comm)

case 1:
if(!StackFull(St))

Push(St, Num, Time);
printf("此车进入停车场第 %d 号车位\n", St->top + 1);

else

if(!QueueFull(Qu))

EnQueue(Qu, Num);
printf("停车场目前已满,请稍后!");
printf("此车进入候车场第 %d 号\n", Qu->rear);

else
printf("候车场已满,请另寻其他停车场吧!");

break;
case 2:
for(i = 0;i <= St->top && St->CarNum[i] != Num; i++);
if(i > St->top)
printf("停车场没有该编号的车,请确定是否输入正确\n");
else

for(j = i; j <= St->top; j++)

Pop(St, e1, e2);
Push(St1, e1, e2);

Pop(St, e1, e2);
printf("编号%d汽车,停车费用为:%d\n", Num, (Time - e2) * Price);
while(!StackEmpty(St1))

Pop(St1, e1, e2);
Push(St, e1, e2);

if(!QueueEmpty(Qu))

DeQueue(Qu, e1);
Push(St, e1, Time);


break;
case 3:
if(!StackEmpty(St))

printf("停车场现有如下车辆:\n");
DispStack(St);

else
printf("停车场目前没有车辆!\n\n");
break;
case 4:
if(!QueueEmpty(Qu))

printf("候车场现在有如下车辆:\n");
DispQueue(Qu);

else
printf("候车场目前没有车辆!\n\n");
break;
case 0:
exit(0);
break;
default:
printf("你的选择有误,请重新选择!\n\n");
break;


本回答被提问者采纳

谁能帮我解释一下 FBX 格式?

...ananyoneexplaintheFBXformatforme?【发布时间】:2011-12-0521:58:37【问题描述】:我使用notepad++查看FBX模型的数据结构,但我在理解它时遇到了一些问题。这是位于(0,0,0)的立方体(side=10)的一些信息,谁能告诉我这些成员是什么意思?... 查看详情

谁能帮我写个毕业论文(英语翻译)可以的话2000分酬谢

就是翻译3000字左右的文章再加800字心得,本人英语小白心得也是中文,保证会给分数的,毕竟我也是玩了好几年知道一点一点累积的分数。。参考技术AMarketResearchandExportPromotionExportMarketingPlanThemarkingplanisthebasisonwhichalltheoverseasprom... 查看详情

请问谁能帮我解说一下arcgisserverapiforjavascript的发展前景和开发优势?

参考技术Aforsilverlight,forflexesri公司停止跟新了,以后主要发展forjavascript,所以前景是一片大好。优势主要是不需要插件吧,以后还会持续跟新。 查看详情

谁能帮我翻译一下一份计算机专业的英文,谢谢

PrologTheprogramminglanguageProlog(shortforforPROgramminginLOGic)isadeclaractiveprogramminglanguagewhoseunderlyingproblem-solvingalgorithmisbasedonrepeatedresolution.Suchlanguagesarecalledlogicprogramminglanguages.AprograminPrologconsistsofacollectionofinitialstatementstowhichtheunderlyingalgorithma... 查看详情

谁能帮我解决这个问题

】谁能帮我解决这个问题【英文标题】:cananyonehelpmewiththistrigger【发布时间】:2014-04-1202:49:43【问题描述】:我是数据库新手。所以,尽我所能设计一个库存管理系统。我想做以下事情数据库名称是“yh_electronic”表名是-orders属... 查看详情

谁能帮我解决这个 xcode 问题?

】谁能帮我解决这个xcode问题?【英文标题】:Cananyonehelpmewiththisxcodeissue?【发布时间】:2014-04-0310:24:43【问题描述】:我正在尝试让我的应用在iPad上正确显示,就像我在文本位置运行它时一样;label.position=CGPointMake(-180,-135);这是... 查看详情

我在流泪的时候给自己下了个断点,谁能帮我调试一下人生?

...一个应用程序,虽然在运行,缺有致命的缺陷,为了解决问题我临时用了trycatch,下面我描述一下需求:  从小身体就不好,母亲从背到用轮椅,陪我从上学到上班到她患癌去世!我的人生也就从那时开始变了,从无忧无虑到... 查看详情

谁能帮我创建 Jmeter 框架?

...onehelpmetocreateJmeterFramework?【发布时间】:2016-03-0111:57:59【问题描述】:任何可以帮助创建框架的插件/附加组件?从哪里开始创建框架以及如何进行?您的意见很有价值。谢谢,阿美【问题讨论】:这个问题对你有用:***.com/questi... 查看详情

谁能帮我解决《当前页面脚本发生错误》的问题?

谁能帮我解决《当前页面脚本发生错误》的问题,我自己的网站,是asp的,有一个页面是影音播放,只要一开始播放就会出来《当前页面脚本发生错误》的提示在其他的地方,和其他的电脑都是这样,如果把这个地址在ie浏览器... 查看详情

谁能帮我解决我创建的触发器插入问题?

】谁能帮我解决我创建的触发器插入问题?【英文标题】:cananyonehelpmewiththetriggerinsertproblemicreated?【发布时间】:2022-01-1423:19:24【问题描述】:所以我做了一个这样的触发器插入:createorreplacetriggerdiscountafterinsertontransactionforeachro... 查看详情

谁能帮我做要求工作?

...anyonehelpmetomakerequireworking?【发布时间】:2015-07-1120:02:31【问题描述】:所以我有2个php文件,一个是调用函数,另一个是实现函数。在实现我调用的函数的那个​​中require("shares.php")-share.php是调用函数的文件问题是,它没有看到... 查看详情

我在自己写一个stl,其中的list使用双向链表的,谁能帮我写一个迭代器。

我在自己写一个STL,其中的list使用双向链表的,谁能帮我写一个迭代器,在主函数中能用(++或--)实现指针的移动,还能用*(指针)读取数据。希望能有点注释。谢谢了!classlist_nodepublic: Tdata;//保存数据元素 list_node*prior;//指... 查看详情

nginx反向代理访问很慢,我做了负载均衡,现在几乎无法访问,有谁能帮我解决一下,万分感谢。

参考技术A建议你用专业负载均衡设备 查看详情

部署到 Vercel 时出现错误。谁能帮我解决下面的问题?

】部署到Vercel时出现错误。谁能帮我解决下面的问题?【英文标题】:IamgettingerrorswhendeployingtoVercel.Cananyonehelpmewiththemyissuesbelow?【发布时间】:2022-01-1907:45:51【问题描述】:克隆github.com/gmcnally78/-Final-Data-Driven-FullStack-App2(分支:... 查看详情

谁能帮我理解为啥在“后缀”起作用时“前缀”不起作用以及如何解决这个问题?

...在“后缀”起作用时“前缀”不起作用以及如何解决这个问题?【英文标题】:Cananyonehelpmetounderstandwhy`prefix`doesnotworkwhen`suffix`doesandhowtofixthis?谁能帮我理解为什么在“后缀”起作用时“前缀”不起作用以及如何解决这个问题?【... 查看详情

delphi2010的datasnap,非常非常郁闷的问题,谁能帮我?

...表联合查询,然后得到一个数据集。select在服务层执行没问题,放到SQLServer2008里执行也没问题,得到的数据集有12个字段,比如是A、B、C、D……J、K、L。但是客户端收到的数据集却丢失了字段!!!比如里面的D、E、G、H丢失了... 查看详情

移动视图始终查看宽度为 980 像素。谁能帮我找出问题所在?

】移动视图始终查看宽度为980像素。谁能帮我找出问题所在?【英文标题】:mobileviewalwaysviewwidthas980px.Cananyonehelpmedetectwhatwrong?【发布时间】:2022-01-1307:27:20【问题描述】:我想为我的网站制作一个嵌入版本,网址为https://staging.i... 查看详情

谁能帮我解决与passportjs相关的错误

】谁能帮我解决与passportjs相关的错误【英文标题】:Cananyonehelpmewiththiserrorrelatedtopassportjs【发布时间】:2020-05-1623:07:06【问题描述】:ReferenceError:UserisnotdefinedatStrategy._verify(C:\\Projects\\config\\passport.js:9:5)atStrategy.authenticate 查看详情