停車場(chǎng)問(wèn)題含完整C程序代碼_第1頁(yè)
停車場(chǎng)問(wèn)題含完整C程序代碼_第2頁(yè)
停車場(chǎng)問(wèn)題含完整C程序代碼_第3頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、最新文件 僅供參考已改成word 文本 方便更改停車場(chǎng)問(wèn)題完整c程序代碼1)內(nèi)容:設(shè)停車場(chǎng)是一個(gè)可停放n輛汽車的狹長(zhǎng)通道,且只有一個(gè)人門可供汽車進(jìn)出。 汽車在停車場(chǎng)內(nèi)按車輛到達(dá)時(shí)間的先后順序,依次由北向南排列(人門在最南端,最先到達(dá) 的在最北端),若停車場(chǎng)內(nèi)已經(jīng)停滿n輛車,那么后來(lái)的車只能在場(chǎng)外等候,一旦有車開(kāi)走, 則等候在第一位的車即可開(kāi)入(這是一個(gè)隊(duì)列設(shè)長(zhǎng)度為m);當(dāng)停車場(chǎng)內(nèi)某輛車需要開(kāi)出, 則在它之后的車輛必須給它讓道,當(dāng)這輛車駛出停車場(chǎng)后,其他車輛按序入棧。每輛車按時(shí) 間收費(fèi)。2)要求:以棧模擬停車場(chǎng),以隊(duì)列模擬車場(chǎng)外的便道,按照從終端讀入數(shù)據(jù)的序列進(jìn)行模 擬管理。每一組輸入數(shù)據(jù)包括三

2、個(gè)數(shù)據(jù):汽車的"到達(dá)"(A表示)或"離去"("表示)信息, 汽車標(biāo)識(shí)(牌照號(hào))以及到達(dá)或離去的時(shí)刻。對(duì)每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出信息為:若是車輛到達(dá),則輸出汽車在停車場(chǎng)內(nèi)或者便道上的停車 位置;若是車輛離去,則輸出汽車在停車場(chǎng)停留的時(shí)間和應(yīng)繳納的費(fèi)用(便道上 不收費(fèi))。棧以順序結(jié)構(gòu)實(shí)現(xiàn),隊(duì)列以鏈表結(jié)構(gòu)實(shí)現(xiàn)。# include<stdio.h>#include<stdlib.h>#define pmax 3定義停車場(chǎng)的最大容車量為3#define price 2停車單價(jià)為2static int flag=O;全局變量,

3、用來(lái)記錄停車場(chǎng)車的數(shù)量struct parkcar定義車輛的結(jié)構(gòu)體long num;int time;struct parkcar*next; *head,*rear;struct parkcar pcpmax;struct parkcar tcpmax;結(jié)構(gòu)體數(shù)組創(chuàng)建停車場(chǎng)的結(jié)構(gòu)體數(shù)組創(chuàng)建用來(lái)緩存停車場(chǎng)出來(lái)的車輛的struct parkcar *inqueue(long carnumzint atime);聲明入隊(duì)列函數(shù),讓車輛進(jìn)入候車區(qū)void arrive(void);void leave(void);void display_P(void);數(shù)void display_W(void);

4、函數(shù)int main()head=NULL;針和尾指針rear=NULL;int state=O;=Parkcar Menu=nn);聲明到達(dá)函數(shù)聲明離開(kāi)函數(shù)/廣明顯示停車場(chǎng)車輛信息的函聲明顯示侯車區(qū)車輛信息的初始化隊(duì)列頭指printfCV/瀚出停車菜單printf(Htprice:2n");printf("tinputstatenH);A ),后執(zhí)行相應(yīng)函數(shù)printf(Ht AarrivenJ;printf(Ht DleavenJ;printf(Ht Pdisplay park_carnJ;printf(Ht Wdisplay wait_carrf);printf(Ht

5、 Equitn”);do通過(guò)先輸入狀態(tài)(如通過(guò)先輸入狀如果停車場(chǎng)為空則printf(”input:n“);scanf(,%c,/&state);fflush(stdin);switch(state)態(tài)(如A ),后執(zhí)行相應(yīng)函數(shù)case 'A'larriveOjbreak;case ,D':if(pcflag-l.num=NULL)輸出為空printf("Park is empty!n");elseleave();break;case P:display_P();break;case 'W':clisplay_W();break

6、;case 'E':break;default:printf("eiror message,!nput again!rf);當(dāng)輸入Ewhile(state!=,E,);則退出return 0;void arrive(void) long carnum;int atime;prin tf(Mplease in put car number and arrive time!nn);scanf("%ld %d,/&carnum,&atime);fflush(stdin);if(flag!=pmax)如果停車場(chǎng)未滿,則入停車場(chǎng)pcflag. nu m

7、=carnum;pcflag.time=atime;+flag;else否則inqueue(car nunxatime);囲唉車區(qū)struct parkcar 才inqueue(long carnumjnt atime)立候車區(qū)的隊(duì)列鏈表struct parkcar*p;p=(struct parkcar*)malloc(sizeof(struct parkcar);p->num=carnum; p->time=atime;if(head=NULL)head=p; elserear- >n ext=p;rear=p;rear->next =NULL; return he

8、ad;void leave(void)long car num;int ltime,dtime;int save=0;int i=l,flagO;以尾插法建離開(kāi)時(shí)間,停車時(shí)間flagO=flag;/flagO用來(lái)存儲(chǔ)剛調(diào)用離開(kāi)函數(shù)時(shí)flag的值struct parkcar*p;prin tf(nplease in put car nu mber and leave time!nJ;scanf("%ld %d,&carnum,&ltime);fflush(stdin);while(pcflag-l.num !=carnum)從棧頂往下找要離開(kāi)的那輛車tcsave. nu

9、 m=pcflag-l.num;tcsave.time =pcflag-l.time;tcsave. next =pcflag-l. next ;if(flag=l&&pcO.num !=carnum)如果找到棧底都沒(méi)有這輛車,則返回,并將存儲(chǔ)著剛調(diào)用離開(kāi)函數(shù)時(shí)flag的值,即flagO重新賦值給flag ,避免在沒(méi)有車輛離開(kāi)的情況下對(duì)全局變量flag進(jìn)行修改而導(dǎo)致錯(cuò)誤printf(nThis car is not founded!nn);flag=flagO;return;flag-;save+;dtime=ltime-pcflag-l.time ;停車時(shí)間的計(jì)算5 口果輸入

10、的離開(kāi)時(shí)間小于到達(dá)時(shí)間則重新輸入離開(kāi)時(shí)間printf(nThe leave time is illegal,please input the leave time againn”); scanf(,%d,&ltime);fflush(stdin);dtime=ltime-pcflag-l.time;printf("tpark time:%drV:dtime);printf("tcost: %dn"/dtime*price);輸出停車時(shí)間和費(fèi)用while(save!=O)當(dāng)車輛離開(kāi)后,將緩存棧里的車回到停車場(chǎng)if(i-)flag-;因?yàn)閳?zhí)行完上一個(gè)while

11、循環(huán)后flag少執(zhí)行了次減一操作,通過(guò)控制i來(lái)讓flag在這個(gè)循環(huán)里只減一次。但flag-save-;放在while ( save!=0 )外面,這樣對(duì)某些輸入會(huì)有bug。也就是只有當(dāng)緩存棧里有車時(shí)才需要flag做一次減一操作pcflag.num =tcsave.num ;pcflag.time =tcsave.time;flag+;if(head!=NULL)如果候車 區(qū)不空,則將隊(duì)首第一輛車進(jìn)入停車場(chǎng)p=head;pcflag.num 二p>num;pcflag.time =ltime;pcflag.next 二p>next;顯示從候車區(qū)flag+;printfC't&

12、#39;Wld'car in park,arrive time:%dn蔦p->num Jtime);進(jìn)停車場(chǎng)的車輛車牌號(hào)和進(jìn)入時(shí)間head=head->n ext;free (p);void display_P(void)從棧頂往棧底顯示停車場(chǎng)的車輛信息int flagl;flagl=flag;用flagl記錄此時(shí)的flag ,避免對(duì)全局變量進(jìn)行操作prin tfC'Xtparkcarnumairive_timerf);fflush(stdin);while(flagl)!=O)printf(Ht%ld%drCpcflagllnum,pcflag:lJtirne);flagl-;從隊(duì)首void display_W(void)往隊(duì)尾顯示候車區(qū)的車輛信息struct parkcar*w;w=head;prin tf(Htwait_carnum arrive_timenH);while(w!=NULL)printf(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論