



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、設(shè)停車場是一個可停放n 輛車的狹長通道,且只有一個大門可供汽車進出。在停車場,汽車按到達的先后次序,由北向南依次排列(假設(shè)大門在最南端)。若車場已停滿 n 輛車,則后來的汽車要在門外的便道上等候,當有車開走時,便道上的第一輛車即可開入。 當停車場某輛車要離開時, 在它之后進去的車輛必須先推出車場為它讓路,待該輛車開出大門以后,其他車輛再按原次序返回車場。每輛車離開停車場時,應(yīng)按其停留時間的長短交費(在便道上停留的時間不收費)。試編寫程序,模擬上述管理過程。要求以順序棧模擬停車場,以鏈隊列模擬便道。從終端讀入汽車到達或離去的數(shù)據(jù),每組數(shù)據(jù)包括三項: (1) 是“到達”還是“離去” (2) 汽車牌
2、照; (3) “到達”或“離去”的時刻。與每組輸入信息相應(yīng)的輸出信息為: 如果是到達的車輛, 則輸出其在停車場中或便道上的位置; 如果是離去的車輛, 則輸出其在停車場中停留的時間和應(yīng)繳的費用。 (需另設(shè)一個棧,臨時停放為讓路而從車場退出的車。)#include<iostream>#define M 5using namespace std;typedef int Datatype;typedef structDatatype bianhaoM;int top;int hM;/ 時int mM;/ 分int sM;/ 秒Seqstack;/ 停車場棧的定義typedef struct
3、 Node/ 便道結(jié)點,表示一輛汽車Datatype bianhao;struct Node *next;node;typedef struct專業(yè)資料node *front;node *rear;int count;biandao;/ 便道/ 停車場順序棧初始化void InitSeqstack(Seqstack *t)t->top=-1;/ 進棧,即進入停車場int Push(Seqstack *t,intx,int h,int m,int s)if(t->top=M-1)return 0;/ 停車場棧已滿t->top+;t->bianhaot->top=x;
4、t->ht->top=h;t->mt->top=m;t->st->top=s;return 1;/ 出棧,即離開停車場int Pop(Seqstack *t,int*x,int *h,int *m,int *s)if(t->top=-1)return 0;else*x=t->bianhaot->top;*h=t->ht->top;專業(yè)資料*m=t->mt->top;*s=t->st->top;t->top-;return 1;/ 查找某牌照的車在停車場中的位置, 若找到則返回其位置,否則返回 -1i
5、nt Find(Seqstack t,intx)int i;for(i=0;i<=t.top;i+)if(t.bianhaoi!=x)continue;elsebreak;if(i>t.top)return(-1);elsereturn(i);/ 判斷停車場是否已滿int IsSeqstackFull(Seqstack t)if(t.top=M-1)return 1;elsereturn 0;/ 判斷停車場是否已沒有車輛專業(yè)資料int IsSeqstackEmpty(Seqstack t)if(t.top=-1)return 1;elsereturn 0;/ 依次顯示停車場停放的所
6、有車輛void ShowSeqstack(Seqstack t)int i;if(t.top=-1)cout<<" 停車場沒有停放車輛 "<<endl; elsefor(i=0;i<=t.top;i+)cout<<"牌照: "<<t.bianhaoi<<endl;/ 隊列初始化int Initbiandao(biandao *Q)Q->front=new node;if(Q->front!=NULL)Q->rear=Q->front;Q->front->
7、next=NULL;Q->count=0;return(true);else return(false);/ 入隊操作,即當停車場滿了的時候,再到達的車輛進去便專業(yè)資料道隊列int Enterbiandao(biandao *Q,intx)node *NewNode;NewNode=new node;if(NewNode!=NULL)NewNode->bianhao=x;NewNode->next=NULL;Q->rear->next=NewNode;Q->rear=NewNode;Q->count+;return(true);else return(
8、false);/ 出隊操作,即便道上的車輛從便道開出來int Deletebiandao(biandao *Q,int*x)node *p;if(Q->front=Q->rear)return(false);p=Q->front->next;Q->front->next=p->next;if(Q->rear=p)Q->rear=Q->front;*x=p->bianhao;free(p);Q->count-;return(true);專業(yè)資料/ 判斷便道隊列是否為空int IsbiandaoEmpty(biandao Q)
9、if(Q.front=Q.rear)return(true);elsereturn(false);/ 當 count=0時,就空了/ 依次顯示便道上停放的所有車輛void Showbiandao(biandao Q)node *p;p=Q.front->next;if(p=NULL)cout<<" 便道上沒有停放車輛 !"<<endl; elsewhile(p!=NULL)cout<<"牌照: "<<p->bianhao<<endl;p=p->next;36/ 計算停留時間差d
10、ouble Time(int h1,int m1,int s1,int h2,int m2,int s2)double p,q;p=h1*3600+m1*60+s1-(h2*3600+m2*60+s2);q=(double)p/3600;return(q);專業(yè)資料/ 計算停車費用double Cost(double t,int u)return(t*u);/ 主函數(shù)void main()double time,cost;int ch;intx,*y,z;int i,flag=1,h,m,s,unit_price,hh,mm,ss;y=new int;Seqstack*t;/ 定義停車棧t=n
11、ew Seqstack;InitSeqstack(t);biandao *Q;/ 定義便道隊列Q=new biandao;Initbiandao(Q);Seqstack*r;/ 定義讓路棧r=new Seqstack;InitSeqstack(r);cout<<"請設(shè)置停車費用單價: ( _元 / 小時) "<<endl;cin>>unit_price;while(flag)cout<<"*"<<endl;專業(yè)資料cout<<" 請 選 擇 命 令 : "<
12、<endl<<"1: 到 達 "<<endl<<"2: 離開 "<<endl<<"3: 依次顯示停車場停放車輛"<<endl<<"4:依次顯示便道上停放車輛"<<endl<<"5:結(jié)束"<<endl;cout<<"*"<<endl;cin>>ch;switch(ch)case 1:cout<<"
13、請輸入到達的汽車牌照:"<<endl;cin>>x;if(IsSeqstackFull(*t)cout<<"停車場已滿,請在便道等候!"<<endl;Enterbiandao(Q,x);cout<<"將此車停放在便道的"<<Q->count<<"號位置 !"<<endl;elsewhile(1)cout<<"請輸入到達的時間( 例如,2108 23) : "<<endl;cin&g
14、t;>h>>m>>s;if(h<0|h>23)continue;/ 輸入數(shù)據(jù)不合法,回去重新輸入if (m<0 | m>59) continue;if (s>-1 && s<61)break;/ 輸入時間全部合法,退出循環(huán)專業(yè)資料/ 輸入時間全部合Push(t,x,h,m,s);cout<<"將此車停放在停車場的"<<t->top+1<<"號停車位置 "<<endl;break;case 2:if(IsSeqstackE
15、mpty(*t)cout<<"停車場已沒有車輛"<<endl;elsecout<<"請輸入要離開的汽車的車牌照:"<<endl;cin>>x;if(Find(*t,x)=-1)cout<<"停車場沒有該汽車!"<<endl;else/ 有該的汽車while(1)cout<<"請輸入離開的時間( 例如,2358 03) : "<<endl;cin>>h>>m>>s;if(h&
16、lt;0|h>23)continue;/ 輸入數(shù)據(jù)不合法,回去重新輸入if (m<0 | m>59) continue;if (s>-1 && s<61)break;法,退出循環(huán)專業(yè)資料if(Find(*t,x)=t->top)Pop(t,y,&hh,&mm,&ss);/ 要離開的車輛正好是最后一輛進入停車場的車 time=Time(h,m,s,hh,mm,ss);cout<<"停留時間為:"<<time<<"小時 "<<endl;
17、/ 結(jié)賬cost=Cost(time,unit_price);cout<<"應(yīng) 繳 費 用 為 : "<<cost<<"元"<<endl;elsefor(i=(Find(*t,x)+1);i<=t->top;)/該車不是最后一輛進入停車場的車,其它車要讓路Pop(t,y,&hh,&mm,&ss);Push(r,*y,hh,mm,ss);/ 進入讓路棧rPop(t,y,&hh,&mm,&ss);/ 要離開的車輛離開了time=Time(h,m,s,hh,mm,ss);cout<<"停留時間為:"<<time<<"小時 "<<endl;/ 結(jié)賬cost=Cost(time,unit_price);cout<<"應(yīng)繳費用為:"<<cost<<"元"<<endl;for(i=0;i<=r->top;)/ 讓路的車輛重新回到停車場專業(yè)資料Pop(r,y,&hh,&mm,&ss);Push(t,*y,hh,mm,ss);if(!Isbia
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 樓上太吵賠償協(xié)議書
- 手機代發(fā)合同協(xié)議書
- 消防維修合同協(xié)議書
- 普通合伙配股協(xié)議書
- 油漆班組承包協(xié)議書
- 欠款定期償還協(xié)議書
- 打鬧受傷解決協(xié)議書
- 教育培訓(xùn)合伙協(xié)議書
- 村里簽過土地協(xié)議書
- 探傷委托加工協(xié)議書
- 人教版八下道德與法治教學設(shè)計:2.2加強憲法監(jiān)督
- 血透患者的血壓管理
- 《自動化生產(chǎn)線集成與應(yīng)用- Integration》課件-項目一 自動化生產(chǎn)線概述
- 4.2依法履行義務(wù) 教案 2024-2025學年統(tǒng)編版道德與法治八年級下冊
- 二元一次方程組講義
- 2025江蘇蘇州獅山商務(wù)創(chuàng)新發(fā)展集團有限公司及下屬板塊公司招聘10人筆試參考題庫附帶答案詳解
- “輸出軸”零件的機械加工工藝及其鉆端面φ20孔工藝裝備說明書
- 《小型智能滅火機器人的設(shè)計》11000字(論文)
- 寶潔波士頓矩陣案例分析課件
- 《13潔凈的水域》教學設(shè)計-2023-2024學年科學六年級下冊蘇教版
- 【物理】跨學科實踐制作微型密度計 課件+2024-2025學年物理人教版八年級下冊
評論
0/150
提交評論