<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
C語言課程設計之停車場管理問題,供大家參考,具體內容如下
1.問題描述
停車場內只有一個可停放n輛汽車的狹長通道,且只有一個大門可供汽車進出。汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列(大門在最南端,最先到達的第一輛車停放在停車場的最北端),若車場內已停滿n輛汽車,則後來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當停車場內某輛車要離開時,在它之後開入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其它車輛再按原次序進入車場,每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費用。試為停車場編制按上述要求進行管理的模擬程式。
2.基本要求
(1)以棧模擬停車場,以佇列模擬車場外的便道,按照從終端讀入的輸入資料序列進行模擬管理。
(2)每一組輸入資料包括三個資料項:汽車“到達”或“離去”資訊、汽車牌照號碼及到達或離去的時刻,對每一組輸入資料進行操作後的輸出資料為:若是車輛到達,則輸出汽車在停車場內或便道上的停車位置;若是車離去;則輸出汽車在停車場內停留的時間和應交納的費用(在便道上停留的時間不收費)。
(3)棧以順序結構實現,佇列以連結串列結構實現。
(4)按照題意要求獨立進行設計,設計結束後按要求寫出設計報告。
#include <stdio.h> #include <malloc.h> #include <stdlib.h> typedef int ElemType; #define MaxSize 100 #define QNODE struct QNode typedef struct Node //車輛資訊 { char AL; int NO; int time; }Node; typedef struct Stack //棧定義 { struct Node data[MaxSize]; int top; int num; }SqStack; QNODE //佇列節點 { struct Node data; QNODE *next; }; typedef struct linkqueue //佇列結構體定義 { QNODE *front,*rear; int num; }LinkQueue; SqStack *Init_SeqStack() //置空棧 { SqStack *s; s=(SqStack*)malloc(sizeof(SqStack)); s->top=-1; s->num=0; return s; } LinkQueue *Init_LQueue() //建立空佇列 { LinkQueue *q; QNODE *p; q=(LinkQueue*)malloc(sizeof(LinkQueue)); p=(QNODE*)malloc(sizeof(QNODE)); p->next=NULL; q->front=q->rear=p; q->num=0; return q; } int ISEmpty_SeqStack(SqStack *s) //判斷棧是否為空,棧為空返回1 { if(s->top ==-1) return 1; else return 0; } int ISFULL_SeqStack(SqStack *s,int n) //判斷棧是否已滿,若棧滿返回1 { if(s->top==n-1) return 1; else return 0; } int ISEmpty_LQueue(LinkQueue *q) //判斷佇列是否為空,佇列為空返回1 { if(q->front==q->rear) return 1; else return 0; } void IN_Lqueue( LinkQueue *q,struct Node s) //入隊 { QNODE *p; p=(QNODE*)malloc(sizeof(QNODE)); p->data=s; q->num++; p->next=NULL; q->rear->next =p; q->rear =p; } void Push_SeqStack(SqStack *p,struct Node s) //入棧 { p->top ++; p->data[p->top]=s; p->num++; } int POP_SeqStack(SqStack *s,struct Node car)//出棧 { SqStack *p; int t; p=Init_SeqStack(); while(s->data[s->top].NO !=car.NO)//找到車牌號為P.NO的車, { Push_SeqStack(p,s->data[s->top]); s->top--; s->num--; } t=car.time-s->data[s->top].time; s->top--; s->num--; while(ISEmpty_SeqStack(p)==0) { Push_SeqStack(s,p->data[p->top]); p->top--; p->num--; } return t; } struct Node Out_LQueue(LinkQueue *q) //出隊 { QNODE *p; p=q->front->next; q->front->next=p->next; q->num --; if( q->front->next==NULL) q->rear=q->front; return p->data; free(p); } int main() { SqStack *parkstack; //parkstack為表示停車場的棧 LinkQueue *parkqueue; //parkqueue為表示便道的佇列 struct Node car; int n,a=0,t; //n為停車場棧的最大容量 float f; //f為每小時收費 parkstack=Init_SeqStack(); parkqueue=Init_LQueue(); //初始介面 printf("***************停車場資訊查詢***************n"); printf("請輸入停車場最大容量n="); scanf("%d",&n); printf("n請輸入每分鐘收取費用f="); scanf("%f",&f); printf("n請輸入車輛資訊n"); scanf("%c,%d,%d",&car.AL,&car.NO,&car.time); while(car.AL!='Q') { if(car.AL=='A' ) { // 汽車到達的情況 if(ISFULL_SeqStack(parkstack,n)==1) //棧滿的情況 { IN_Lqueue(parkqueue,car); //進入佇列等待 printf("這輛車在門外便道上第%d個位置n",parkqueue->num); printf("n"); printf("請輸入車輛資訊n"); } else { Push_SeqStack(parkstack,car); //入棧 printf("這輛車在停車場內第%d個位置n",parkstack->num); printf("n"); printf("請輸入車輛資訊n"); } } if(car.AL=='L' ) //汽車離開的情況 { t=POP_SeqStack(parkstack,car);//出棧 printf("這輛車停留時間為%d,收費為%f。n",t,f*t); printf("n"); printf("請輸入車輛資訊n"); if(ISEmpty_LQueue(parkqueue)==0) //佇列不為空需要進棧 Push_SeqStack(parkstack,Out_LQueue(parkqueue) ); } if(car.AL=='P'&&car.NO==0&&car.time==0 )//顯示停車場的車數 { printf("停車場的車數為%dn",parkstack->num); printf("n"); printf("請輸入車輛資訊n"); } if(car.AL=='W'&&car.NO==0&&car.time==0 )//顯示候車場的車數 { printf("候車場的車數為%dn",parkqueue->num); printf("n"); printf("請輸入車輛資訊n"); } scanf("%c,%d,%d",&car.AL,&car.NO,&car.time); } printf("輸入結束n"); return 1; }
關鍵字:A——arrive;L——leave;P——park;Q——quit;W——wait.
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45