实验内容:

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

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

若有车辆到达,则输出该汽车的停车位置;若有车辆离开,则输出该汽车在停车场内停留的时间。

输入输出示例


3

A 1 1

1号车停入1号位

A 2 2

2号车停入2号位

A 3 3

3号车停入3号位

D 1 4

1号车出停车场,停留时间3

A 4 5

4号车停入3号位

A 5 6

5号车在便道上等待

D 4 7

4号车出停车场,停留时间2

5号车停入3号位

D 5 8

5号车出停车场,停留时间1

E 0 0


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#define FIRST 0
typedef struct {int number;                   //车号int time;                       //时间
}CAR;void Fuse(CAR* &p, CAR* &w,int park_pl)              //初始化
{for (int i = 0; i < park_pl; i++) {p[i].number = FIRST;p[i].time = FIRST;}for (int i = 0; i < 10; i++) {w[i].number = FIRST;w[i].time = FIRST;}
}int Seek(CAR* p,int park_pl,int num)                //查找车俩
{for (int i = 0; i < park_pl; i++) {if (p[i].number == num) {return i;}}return -1;
}void ALL(CAR* p, CAR* w,int time, int park_pl)                  //停车场及便道全部情况
{int i = 0;printf("停车场-----现在时间:%d\n",time);printf("停车位------车号------停入时间\n");for ( i = 0; i < park_pl; i++) {printf("--%d---------%d---------%d--\n", i + 1, p[i].number, p[i].time);}i = 0;printf("便道-----\n");printf("--车号------等待时间--\n");while (w[i].number != FIRST) {printf("--%d----------%d---\n", w[i].number, w[i].time);i++;}
}int YNempty(CAR *p,int park_pl)              //查找空位
{for (int i = 0; i < park_pl; i++) {if (p[i].number == FIRST) {return i;}}return -1;
}void Arive(CAR* p, CAR* w, int park_pl, int &wa,int &time)
{int x = YNempty(p, park_pl), num = 0, tim = 0;scanf("%d", &num);scanf("%d", &tim);time = tim;if (x == -1) {w[wa].number = num;w[wa].time = tim;wa++;printf("%d号车在便道上等待\n",num);}else {p[x].number = num;p[x].time = tim;printf("%d号车停入%d号位\n", num, x + 1);}
}void Leave(CAR* p, CAR* w, int park_pl, int& wa,int &time)
{int num = 0, tim = 0, x = 0, jude = 0;scanf("%d", &num);scanf("%d", &tim);time = tim;x = Seek(p, park_pl, num);if (x == -1) {printf("没有此车辆!\n");}else {printf("%d号车出停车场,停留时间%d\n", p[x].number, tim - p[x].time);p[x].number = 0;p[x].time = 0;for (int i = x; i < park_pl-1; i++) {p[i].number = p[i + 1].number;p[i].time = p[i + 1].time;}p[park_pl - 1].number = w[0].number;if (w[0].number != 0) {jude = 1;printf("%d号车停入3号位\n", w[0].number);for (int i = 0; w[i].number != 0; i++) {w[i].number = w[i + 1].number;w[i].time = w[i + 1].time;}wa--;}if (jude) {p[park_pl - 1].time = tim;}}}int main()
{int park_pl = 0, x = 0, time = 0, wa = 0;char mod, ch;printf("请设置最大停车数:");scanf("%d", &park_pl);ch = getchar();CAR* Pp = (CAR*)malloc(sizeof(CAR) * park_pl);CAR* Wait = (CAR*)malloc(sizeof(CAR)*10);Fuse(Pp, Wait, park_pl);ALL(Pp, Wait, time, park_pl);printf("请输入(操作(A表示到达、D表示离开、E表示结束)车号 时间)\n");while ((scanf("%c", &mod)), mod != 'E') {Sleep(4000);system("cls");switch (mod){case 'A':Arive(Pp,Wait,park_pl,wa,time);ALL(Pp, Wait, time, park_pl);ch = getchar();Sleep(4000);system("cls");break;case 'D':Leave(Pp, Wait, park_pl, wa,time);ALL(Pp, Wait, time, park_pl);ch = getchar();Sleep(4000);system("cls");break;default:printf("输入错误!\n");break;}printf("请输入(操作(A表示到达、D表示离开、E表示结束)车号 时间)\n");}return 0;
}

程序设计与实践 停车场管理 C语言相关推荐

  1. 停车场管理c语言课程设计,数据结构课程设计-停车场管理

    #include #include /** * 具体要求请看C语言数据结构课程设计 3.4.1:停车场管理系统 * 思路: * 进: * 1. 车按照顺序先进去通道(入队列) * 2. 给出指定,让先 ...

  2. 模拟停车场管理C语言代码

    1.问题描述: 设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达的时间先后顺序依次排列,若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦 ...

  3. c语言程序设计上机总结,C语言程序设计上机实践心得报告.doc

    C语言程序设计上机实践心得报告C语言程序设计上机实践心得报告 班级:11电信2 姓名:莫金波 学号:110703224 2012.12.28 我们专业的学生在专业老师的带领下进行了c语言设计基础教程的 ...

  4. c语言程序设计上机实践,C语言程序设计上机实践心得报告

    C语言程序设计上机实践心得报告 C语言程序设计上机实践心得报告 班级:11电信2 姓名:莫金波 学号:110703224 2021.12.28 惠州学院 HUIZHOU UNIVERSITY 我们专业 ...

  5. 【程序设计与实践】实验五:停车场管理

    [程序设计与实践]实验五:停车场管理 设有一个可以停放n辆汽车的狭长停车场,它只有一个大门供车辆进出. 车辆按到达停车场时间的先后次序依次从停车场最里面向大门口处停放(即最先到达的一辆车停放在停车场的 ...

  6. 完成杂志续订c语言程序,C语言程序设计报告杂志订阅管理软件.doc

    C语言程序设计报告杂志订阅管理软件 C 语 言 程 序 设 计 学院: 工程学院 班级序号: 学号: 20071003303 姓名: 华进 指导老师: 刘文中 前言 我们学习C语言课程设计的主要目的是 ...

  7. 杂志订阅管理系统c语言实训报告,C语言程序设计报告—杂志订阅管理软件、、.doc...

    C语言程序设计报告-杂志订阅管理软件.. 中国地质大学(武汉)C语言课程设计报告 学 院: 专 业: 题 目: 杂志订阅管理系统 班 级: 姓 名: 学 号: 指导教师: 2011年1月9日 程序在最 ...

  8. c语言程序设计学籍信息,C语言程序设计报告——学生学籍管理(报告).doc

    C语言程序设计报告--学生学籍管理(报告) 软件设计报告 题 目: 学生学籍管理系统 院系名称:专业名称:班 级: 班内序号:学生姓名 :指导教师:时间: 一.课程设计目的 1.通过本课程设计,强化上 ...

  9. C语言数据结构课程设计-停车场管理

    停车场管理 1.课程设计目的 2. 课程设计内容和要求 2.1问题描述: 2.2设计要求: 3.课程设计总体方案及分析 3.1问题分析 3.2 概要设计 3.3 测试结果 4. 课程设计总结 5. 附 ...

最新文章

  1. R语言|PLS_DA分析绘图示例
  2. Java 编程的动态性,第3部分: 应用反射--转载
  3. 我现在编程方面的特别大的问题
  4. SQL Server 中创建数据库、更改主文件组示例
  5. C++ 11 Lambda表达式
  6. 结构化编程 —— 顺序、分支(选择)、循环
  7. 如何在Excel中提取身份证号码中的信息
  8. 项目_电商_淘淘商城_0000
  9. 基于QT和DCMTK的Dicom 图像浏览器---目录
  10. 二月二龙抬头【集锦】
  11. WIN7更改用户名访问共享文件夹
  12. Unity ECS Sample解析(1)
  13. python基础读后感_《Python基础教程读书笔记》
  14. 极米h3s和坚果j10、当贝f3三款投影实测对比来了!
  15. 计算机累加器有加法器功能吗,累加器是什么_累加器的作用及原理介绍
  16. 高数 03.02洛必达法则
  17. 移动端电影院:享受触手可及的幸福
  18. ESP32C3串口通信
  19. 下载安装纯净版火狐浏览器的步骤
  20. 【kubernetes/k8s源码分析】kubelet cri源码分析

热门文章

  1. 电子科技大约计算机博士读几年,成都电子科技大学的博士的毕业条件 你能做到么...
  2. 计算机系统结构——流水线性能指标+例题
  3. php禁止ua,服务器禁止某些User Agent抓取网站
  4. Python网络爬虫(三) 爬虫进阶
  5. python如何声明函数_python如何声明函数
  6. 基于ol-plot的openlayers 5 的标绘地图
  7. win10记事本保存时默认编码格式改为UTF-8——亲测
  8. python基础拾遗
  9. Prezi实战 ------ 一款颠覆性的做presentation的软件
  10. 树莓派综合项目2:智能小车(三)无线电遥控