pta 停车场管理

发布于:2022-11-11 ⋅ 阅读:(692) ⋅ 点赞:(0)

设有一个可以停放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 <stdio.h>

int main() {
    int n, i = 1, flag = 0;
    int car[100];
    int waitcar[100];
    int space[100] = {0};
    int time[2][100] = {0};
    char a;
    int k = 0; //记录未停入停车场的车数
    scanf("%d", &n);
    int j = 0; //记录停车场中的车数
    while (1) {
        scanf("%c", &a);
        if (a == 'A') {
            if (j < n) {
                scanf("%d", &car[i]);
                j++;
                scanf("%d", &time[1][car[i]]);
                getchar();
                space[car[i]] = j;
                printf("car#%d in parking space #%d\n", car[i], space[car[i]]);
            }
            //有空余车位停入
            else {
                k++;
                scanf("%d", &waitcar[k]);
                scanf("%d", &time[1][0]);
                getchar();
                printf("car#%d waiting\n", waitcar[k]);
            }
            //无空余车位等待
            i++;

        } else if (a == 'D') {
            int flag = 0;
            scanf("%d", &car[0]);
            for (int m = 1; m <= i; m++) {
                if (car[0]==car[m]&&space[car[m]]!=0) {
                    flag = 1;
                }
            }
            //判断该车有无在停车场内
            if (flag == 1) {
                int t = 1;
                scanf("%d", &time[0][car[0]]);
                getchar();
                printf("car#%d out,parking time %d\n", car[0], time[0][car[0]] - time[1][car[0]]);
                while (car[0] != car[t]) {
                    t++;
                }
                for (t + 1; t <= j; t++) {
                    space[car[t]]--;
                }
                if (k > 0) {
                    i++;
                    car[i] = waitcar[1];
                    for (int m = 2; m <= k; m++) {
                        waitcar[m - 1] = waitcar[m];
                    }
                    time[1][car[i]] = time[0][car[0]];
                    space[car[i]] = j;
                    k--;
                    printf("car#%d in parking space #%d\n", car[i], space[car[i]]);
                }

                else {
                    j--;
                }

            }
            //在停车场内
            else if(flag==0) {
                scanf("%d", &time[0][0]);
                getchar();
                printf("the car not in park\n");
            }
            //不在停车场内
        } else if (a == 'E') {
            break;
        }
    }
    return 0;
}

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到