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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ 停车场问题 谁能帮我写一下啊相关的知识,希望对你有一定的参考价值。

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

问题描述
设有一个可以停放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;


本回答被提问者采纳

谁能帮我写一个 R 数据框作为 SAS 数据集?

【中文标题】谁能帮我写一个 R 数据框作为 SAS 数据集?【英文标题】:Can anyone help me write a R data frame as a SAS data set? 【发布时间】:2011-07-25 12:17:00 【问题描述】:

在 R 中,我使用了 foreign 库中的 write.foreign() 函数来将数据框写入 SAS 数据集。

write.foreign(df = test.df, datafile = 'test.sas7bdat', codefile = 'test.txt', package = "SAS")

SAS 数据文件已写入,但当我尝试在 SAS Viewer 9.1 (Windows XP) 中打开它时,我收到以下消息 - “不支持 SAS 数据集文件格式”。

注意:我一般不熟悉 SAS,所以如果存在普通 SAS 用户应该知道的答案,请原谅我的无知。

【问题讨论】:

【参考方案1】:

write.foreign 带有选项package="SAS" 实际上会写出一个逗号分隔的文本文件,然后创建一个带有 SAS 语句的脚本文件以将其读入。您必须运行 SAS 并提交脚本才能将文本文件转换为SAS 数据集。你的电话应该看起来更像

write.foreign(df=test.df, datafile="test.csv", codefile="test.sas", package="SAS")

注意不同的扩展名。此外,write.foreign 将因子变量写为具有控制其外观的格式的数字变量——即因子的 R 定义。如果您只想要字符表示,则必须在导出前通过as.character 转换因子。

【讨论】:

+1 以获得真正的最佳答案,但那不应该是datafile = "test.sas7bdat"吗? @Matt: 不,datafile 是写入的文本文件的名称。如果要指定 SAS 将从该文本文件创建的 SAS 数据集的名称,则必须使用 dataname 参数(默认为“rdata”,无扩展名)。 嗯 - 我认为它需要具有 .sas7bdat 扩展名,而我几天前才这样做。经过仔细检查,我所拥有的只是一个扩展名为 .sas7bdat 的 CSV 文件,SAS 完全忽略了它。感谢您的澄清。 这是一种很好的处理方式。我个人发现的唯一缺点是,如果您从服务器运行 SAS,R 生成的用于读取 csv 文件的 INFILE 语句在 SAS EG for SAS 9 中不起作用。所以在我的情况下,它试图从服务器读取我创建的文件,而不是我的本地机器,这很烦人。我还没有找到解决方法,但如果我找到了,我一定会在这里分享。【参考方案2】:

我也不是 SAS 用户,但我之前使用过 write.xport(),它运行良好。我粗略的理解是 SAS 文件有两种类型,内部文件和 XPORT 文件。 XPORT 是在不同版本、架构等之间更兼容的那些。

【讨论】:

最初,当我尝试 write.xport() 时,我遇到了相同的错误消息。但是当我将文件扩展名从“sas7bdat”更改为“xpt”时,它就像一个魅力。感谢您的帮助。 @Jubbles:太好了,很高兴它成功了。扩展(尤其是在 Windows 上)可能会很痛苦。大多数时候,它们是必要的,但还不够。【参考方案3】:

这是对 Hong Ooi 答案的修改。

在 R 中:

library(foreign)

write.foreign(df=test.df, datafile="test.csv", codefile="test.sas", package="SAS")

在 SAS 中:

同时上传 test.csv 和 test.sas 文件。打开 test.sas。您可能必须编辑从 write.foreign 函数输出的 test.sas 代码。对我有用的是更新INFILE 行以包含库/位置: "/home/kristenmae0/test.csv"

【讨论】:

【参考方案4】:

您可以使用 SAS 轻松完成:只需使用 SAS/IML (proc iml) 或 IMLPlus(面向对象的版本)使用 SAS/IML Studio 进行测试。

看到这个: http://support.sas.com/documentation/cdl/en/imlsstat/63827/HTML/default/viewer.htm#imlsstat_statr_sect004.htm

或免费下载 SAS/IML Studio: http://www.sas.com/apps/demosdownloads/92_SDL_sysdep.jsp?packageID=000721 此版本的 SAS/IML Studio 提供了与 R 语言交互的功能。

【讨论】:

除非 SAS/IML Studio 中存在将 R 对象(您提供的从 SAS 到 R 的文档功能的第一个链接)转换为 SAS 数据文件对象(或其功能等效),我觉得您错过了我的问题的重点。我想将 R 数据帧转换为 SAS 可用的格式。为了给您提供背景信息,我对 R 比 SAS 感到满意,并且更喜欢 R,但许多同事更喜欢 SAS 并且需要使用我的数据。 @Jubbles:IML/IML Studio 可以双向转换:SAS 到 R,以及 R 到 SAS。 @Hong Ooi:谢谢!在与 SAS 同事合作时,我会牢记这一点。

以上是关于c++ 停车场问题 谁能帮我写一下啊的主要内容,如果未能解决你的问题,请参考以下文章

JAVA高手来帮帮我

高手来帮帮我~~

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

谁能帮我写一个java的回调函数的例子

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

C语言:怎么将十进制数字转换为二进制字符串,谁能帮我写个函数