7-111 停车场管理 (50分) C++

7-111 停车场管理 (50分) C++

设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的先后次序依次从停车场最里面向大门口处停放 (即最先到达的第一辆车停放在停车场的最里面) 。如果停车场已放满n辆车,则以后到达的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车可以进入停车场。停车场内如有某辆车要开走,则在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费,停留在便道上的车不收停车费。编写程序对该停车场进行管理。

输入格式:
先输入一个整数n(n<=10),再输入若干组数据,每组数据包括三个数据项:汽车到达或离开的信息(A表示到达、D表示离开、E表示结束)、汽车号码、汽车到达或离开的时刻。

输出格式:
若有车辆到达,则输出该汽车的停车位置;若有车辆离开,则输出该汽车在停车场内停留的时间。如果汔车号码不存在,输出the car not in park

输入样例:

3
A 1 1 
A 2 2
A 3 3
D 1 4
A 4 5
A 5 6
D 4 7
D 5 8
E 0 0

输出样例:

car#1 in parking space #1
car#2 in parking space #2
car#3 in parking space #3
car#1 out,parking time 3
car#4 in parking space #3
car#5 waiting
car#4 out,parking time 2
car#5 in parking space #3
car#5 out,parking time 1

我的代码:

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
    int n;
    int place[11]={0};
    int time[11]={0};
    int wait[11]={0};int waiti=-1;
    cin>>n;

        while(1){
        char x;
        int carnum,cartime;
        cin>>x>>carnum>>cartime;

        if(x=='A'){
                int flag=0;
            for(int j=1;j<=n;j++){
                if(place[j]==0){
                    flag=j;break;
                }//这个位置没有车
            }
            if(flag!=0){
                place[flag]=carnum;
                cout<<"car#"<<carnum<<" in parking space #"<<flag<<endl;
            }//停车入库
            else{
                wait[++waiti]=carnum;
                cout<<"car#"<<carnum<<" waiting"<<endl;
            }//等待停车
        }//到达

        else if(x=='D'){
            int flag=0;
            for(int j=1;j<=n;j++){
                if(place[j]==carnum){
                    flag=j;break;//flag是查找到了正在停车位上的车位
                }
            }
            if(flag==0){
                cout<<"the car not in park"<<endl;
            }//没有这个车
            else{
                cout<<"car#"<<carnum<<" out,parking time "<<time[flag]<<endl;
                place[flag]=0;
                time[flag]=0;
                for(int j=flag;j<=n;j++){
                    place[flag]=place[flag+1];
                    time[flag]=time[flag+1];
                    if(j==n){
                        place[j]=0;time[j]=0;
                    }
                }
                if(waiti!=-1){
                    place[flag]=wait[0];
                    for(int j=0;j<waiti;j++){
                        wait[j]=wait[j+1];
                    }
                    waiti--;
                    cout<<"car#"<<place[flag]<<" in parking space #"<<flag<<endl;
                }
            }//有这辆车,清除这辆车,查询是否有在等待的车,等待的车进入,后面的等待的要前移
        }//离开
        else if(x=='E'){
            break;
        }
        for(int j=1;j<=n;j++){
            if(place[j]!=0){
                time[j]++;
            }
        }//车位上有车就加1时间
    }
    return 0;
}

在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值