7-14 停车场管理

7-14 停车场管理


#include <iostream>
#include <string>
using namespace std;
int main()
{
    int n=0,num=0,time=0,flag=0,k,nt[100]={0},par[100]={0};
//    par[100]内为所停汽车的号码
//    nt[100]汽车进入停车场的时间,下标为汽车号码
	char st;
    cin>>n;
    while(1)
    {
    	cin>>st>>num>>time;
    	if(st=='E')break;//结束
    	
    	else if(st=='A')//停车
    	{
    		par[flag]=num;
			flag++;//标记最后一辆汽车
    		if(flag<=n)//停入停车场
    		{
				nt[num]=time;//开始计费
				cout<<"car#"<<num<<" in parking space #"<<flag<<endl;
			}
			else cout<<"car#"<<num<<" waiting"<<endl;//停在便道
		}
		else//取车
		{
			int i,j,fla=0;
			for(i=0;par[i]!=0;i++)
			{
				if(par[i]==num)//找到汽车位置
				{
					fla=1;
					if(i<n)//如果汽车停在停车场
					{
						cout<<"car#"<<num<<" out,parking time "<<time-nt[num]<<endl;
						nt[par[n-1]]=time;//停车费
					}
					for(j=i;par[j]!=0;j++)par[j]=par[j+1];//移位
					flag--;
					if(flag==n)
					{
					    cout<<"car#"<<par[n-1]<<" in parking space #"<<n<<endl;//停在便道上的第一辆汽车停入停车场
					    nt[par[n-1]]=time;//开始计费
					}
				}
			}
			if(fla==0)cout<<"the car not in park"<<endl;//汽车号码不存在
		}
	}
    return 0;
}

设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆次序。编制一程序模拟该停车场管理。(2) 实现要求:要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。(2) 实现提示:汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。例如,(’A’,1,5)表示1号牌照车在5时刻到达,而(’D’,5,20)表示5号牌照车在20时刻离去。整个程序可以在输入信息为(’E’,0,0)时结束。本题可用顺序存储结构和链式存储结构来实现。本人的一个数据结构课程设计(用C++源码实现,供大家学习参考之用,有不妥之处望指正)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赤城封雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值