當前位置:首頁 » 編程語言 » c語言車隊

c語言車隊

發布時間: 2024-01-07 00:07:12

A. 演算法和數據結構 停車場的管理 c語言

C語言數據結構 車隊管理

我的結題思路:

車的狀態分三種,用switch語句分開{

1:停車 A

庫未滿,往車庫里停車

庫滿,往便道里停車

2:出車 D

從車庫里出車使用臨時車庫

從變道里出車,使用臨時便道

3:停止輸入 E

}

注意

1:請勿略下面代碼中 「還沒有計算位置」 寫的時候提醒自己,上傳時我忘刪了

2:使用靜態數組來記錄進去的時間 ,用 a[車牌號]

3:用靜態 i 來記錄進車庫里的進出車

進車 i++

出車 i--

4:在寫最關鍵部分時,我是用到了才定義,所以看著有亂,包含哈-_- -_-

二、關鍵代碼//我用的是VS2013
#include<stdlib.h>
#include<stdio.h>
#include<iostream>

usingnamespacestd;
staticinti=1;

staticinta[100];
#defineSTACK_INITSIZE100
#defineStackIncrement10
#defineOK1
#defineERROR0//結構體..............................................................................
typedefstructGARAGE{//創建車庫的結構體
int*base;
int*top;
intstacksize;
intOutTime;
}Garage;

typedefstructTPGarage{//創建臨時車庫的結構體
int*base;
int*top;
intstacksize;
}TpGarage;


typedefstructQNode{
intdate;
structQNode*next;
}QNode,*QueuePtr;
typedefstruct{//創建便道的結構體
QueuePtrfront;
QueuePtrrear;
}OtGarage;

typedefstructTNode{//創建臨時便道的結構體
intTdate;
structTNode*Tnext;
}TNode,*TQueuePtr;
typedefstruct{
TQueuePtrTfront;
TQueuePtrTrear;
}TOtGarage;
//.....................................................機構體..................
//...........................................聲明........................
voidInitGarage(Garage&S,intt);//車庫
voidPushGarage(Garage&S,intchp,intt);
voidZPushGarage(Garage&S,intchp);
voidGetTopGarage(TOtGarage&TG,OtGarage&OG,TpGarage&T,Garage&S,intchp,intt);


intPop(Garage&S,int&GH);

voidInitTpStack(TpGarage&T);//臨時車庫
voidPushTpStack(TpGarage&T,intchp);
voidPopTpStack(TpGarage&T,int&chp);


voidInitOtGarage(OtGarage&OG);//變道
voidPushTpStack(TpGarage&T,intchp);
intOutOtGarage(OtGarage&OG,int&e);


voidInitTOtGarage(TOtGarage&TG);//臨時便道
voidTEnOtGarage(TOtGarage&TG,int&Te);
intTOutOtGarage(TOtGarage&TG,int&Te);

inttranverse(GarageS,intt);//遍歷車庫
intPush(charX,intchp,intt,Garage&S,TpGarage&T,OtGarage&OG,TOtGarage&TG);//樞紐
//............................................聲明.......................................
//.................................車庫........................................................


voidInitGarage(Garage&S,intt){//初始化出庫
S.stacksize=t;
S.base=(int*)malloc(S.stacksize*sizeof(int));
S.top=S.base;

}


voidPushGarage(Garage&S,intchp,intt){//車庫進車
a[chp]=t;//記錄當前的時間
*(S.top)++=chp;
}
voidZPushGarage(Garage&S,intchp){//車庫進車
*(S.top)=chp;
S.top++;
}
voidGetTopGarage(TOtGarage&TG,OtGarage&OG,TpGarage&T,Garage&S,intchp,intt){//車庫中出
intkeepch=chp;//將當前的車牌保存下來
intgh=0;
intnum;
intfh=0;
inti=0;//記住車庫出去車的量
inte=0;//做一個遍歷,找出該車的位置
intjs=0;
intTe=0;
S.OutTime=t;//是的話,直接出車,刪掉元素
if(tranverse(S,chp)){//做一個遍歷,該車在車庫的話,就從車庫中出車

while(Pop(S,gh)!=keepch){//讓車庫的車出去
PushTpStack(T,gh);
i++;
}

if(num=(S.OutTime-a[chp])%10==0){
num=S.OutTime-a[chp];
}
elsenum=((S.OutTime-a[chp])/10+1)*10;
cout<<"該車在停車場的時間為"<<num<<//此時輸出該車的信息
"分鍾,應該收費為"<<0.5*num<<"元"<<endl;

for(size_tj=0;j<i;j++){
PopTpStack(T,fh);//依次將其他開回來,往前挪一位,空出門前的車位
ZPushGarage(S,fh);
}
if(OutOtGarage(OG,e)){//當變道里有車時,從外面再進來一輛車
PushGarage(S,e,S.OutTime);
}
}
else{//注意第一個if,這里是對應的else,表示車要從臨時便道里出車
//將便道里的車送到臨時便道,
inty=OutOtGarage(OG,gh);
while(gh!=keepch){//讓車庫的車出去OutOtGarage(OtGarage&OG,int&e)
TEnOtGarage(TG,gh);//推到臨時車道
js++;
y=OutOtGarage(OG,gh);
}
if(js==0){//後面的車往前開
//直接從停車場出去
cout<<"該車未在車庫停車,無需繳費"<<endl;
}
elseif(!OutOtGarage(OG,e)){//如果此時為底的話,再重新進入變道
for(size_tj=0;j<i;j++){
intv;
v=TOutOtGarage(TG,Te);//
PushTpStack(T,Te);//還沒有計算位置
}i--;
cout<<"該車未在車庫停車,無需繳費"<<endl;
}
else{
cout<<"該車未在車庫停車,無需繳費"<<endl;
intjd;
QueuePtrp;//變道有車的話,返回一個
p=OG.front->next;
e=p->date;
OG.front->next=p->next;
if(OG.rear==p)
OG.rear=OG.front;
free(p);
//先釋放一個節點,繼續傳

while(OutOtGarage(OG,gh)){//讓車庫的車出去OutOtGarage(OtGarage&OG,int&e)
TEnOtGarage(TG,gh);//推到臨時車道
}
while(TOutOtGarage(TG,Te)){
PushTpStack(T,Te);
}i--;

}//如果此時不為底的話,繼續進入臨時便道,再進入變道

}
}

intPop(Garage&S,int&GH){//車庫中出車
GH=*--S.top;
returnGH;

}
//....................................車庫.........................

//...............................臨時車庫..........................
voidInitTpStack(TpGarage&T){//初始化臨時車庫
T.stacksize=STACK_INITSIZE;
T.base=(int*)malloc(T.stacksize*sizeof(int));
T.top=T.base;
}
voidPushTpStack(TpGarage&T,intchp){
if(T.top-T.base>=T.stacksize){
T.base=(int*)realloc(T.base,
(T.stacksize+STACK_INITSIZE)*sizeof(int));
T.top=T.base+T.stacksize;
T.stacksize+=STACK_INITSIZE;
}
*T.top++=chp;
}

voidPopTpStack(TpGarage&T,int&chp){//當其為返回值為1的時候,刪除棧頂且返回
chp=*--T.top;
}

//...........................臨時車庫.................................
//...........................變道....................................

voidInitOtGarage(OtGarage&OG){//初始化便道
OG.front=OG.rear=(QueuePtr)malloc(sizeof(QNode));
OG.front->next=NULL;
}

voidEnOtGarage(OtGarage&OG,int&e){//進入變道
QueuePtrp;
p=(QueuePtr)malloc(sizeof(QNode));//用來放置車牌號
p->date=e;
p->next=NULL;
OG.rear->next=p;
OG.rear=p;
cout<<"車庫已滿,該車在變道上的第"<<i<<"位"<<endl;
i++;
cout<<endl;
}


intOutOtGarage(OtGarage&OG,int&e){//變道出車
cout<<endl;//沒有車的話,返回0

if(OG.front==OG.rear){
returnERROR;

}


QueuePtrp;//變道有車的話,返回一個
p=OG.front->next;
e=p->date;
OG.front->next=p->next;
if(OG.rear==p)
OG.rear=OG.front;
free(p);
i--;
returnOK;
}

voidInitTOtGarage(TOtGarage&TG){//初始化便道
TG.Tfront=TG.Trear=(TQueuePtr)malloc(sizeof(TNode));
TG.Tfront->Tnext=NULL;
}
voidTEnOtGarage(TOtGarage&TG,int&Te){//進入臨時變道
TQueuePtrp;
p=(TQueuePtr)malloc(sizeof(TNode));//用來放置車牌號
p->Tdate=Te;
p->Tnext=NULL;
TG.Trear->Tnext=p;
TG.Trear=p;
//cout<<"車庫已滿,該車在變道上的第"<<i<<"位"<<endl;
i++;
cout<<endl;
}
intTOutOtGarage(TOtGarage&TG,int&Te){//臨時變道出車
cout<<endl;//沒有車的話,返回0
if(TG.Tfront==TG.Trear)
returnERROR;

TQueuePtrp;//臨時變道有車的話,返回一個
p=TG.Tfront->Tnext;
Te=p->Tdate;
TG.Tfront->Tnext=p->Tnext;
if(TG.Trear==p)
TG.Trear=TG.Tfront;
free(p);
i--;
returnOK;
}
//........................................臨時便道...........................
//............................總樞紐...........................................


intPush(charX,intchp,intt,Garage&S,TpGarage&T,OtGarage&OG,TOtGarage&TG){
switch(X){//判斷該車是進入還是要離開

case'A':{//情況A,進入車庫
if(S.top-S.base>=S.stacksize){
cout<<"時間在第"<<t<<"分鍾,"<<"車牌號為"<<chp<<"的小車進入便道等待車位"<<endl;
//車庫滿,接下來該車進入便道
EnOtGarage(OG,chp);//調用進入變道的函數
}
else{
//cout<<"OOOOO"<<endl;
PushGarage(S,chp,t);//進入車庫
}
returnOK;
}break;

case'D':{//情況D,離開車庫
GetTopGarage(TG,OG,T,S,chp,t);//1:在車庫中的出去
returnOK;
}break;


case'E':{//情況E,所有的車輛弄乾凈
returnERROR;
}break;

}
}
inttranverse(GarageS,intt){

while(S.top!=S.base){
S.top--;
if(t==*S.top)
returnOK;
}
returnERROR;

}

intmain(){
intnum;
charX;
inttime;
intchp;
intx;

GarageS;
TpGarageT;
OtGarageOG;
TOtGarageTG;
cout<<"溫馨提示:本停車場每10分鍾收費0.5元,不足10分鍾的部分按10分鍾收費。"<<endl;
cout<<"請輸入停車車位的總數:";
cin>>num;

cout<<endl;
InitGarage(S,num);
InitTpStack(T);
InitOtGarage(OG);
InitTOtGarage(TG);
cout<<"輸入停止的標志為(E00)"<<endl;
cout<<"停車信息(格式:(動作,車牌號,時間)):"<<endl;do{
cout<<"請輸入停車信息"<<endl;
cin>>X>>chp>>time;
x=Push(X,chp,time,S,T,OG,TG);
}while(x);

}

B. 百戰程序員:編程語言到底有多少種

這個有很多種的,下面講解寫常遇到的。把編程語言比喻成車:

Ada 是輛丑到極點但是永遠不會出故障的坦克。

C 是輛賽車,它能跑得超乎想像得快,不過每跑個 50 英里就會拋錨。

Cobol 號稱是輛車,不過沒有哪個有自尊心的駕駛員肯承認曾經開過。

C# 是輛競爭模式的家庭旅行車。一旦你開過它,你就不會再用其他競品廠商的產品了。

C++ 是輛大馬力版本的 C 型賽車,它額外提供了成打的特性,而且每跑 250 英里才會拋錨,不過當它真出問題的時候,沒有人能找到究竟是哪兒壞了。

Eiffel 是輛內置了法國口音駕駛說明的汽車。他會幫你快速地找到錯誤並從中學到東西,不過你要是敢跟他爭論的話,他會罵你然後把你從車里扔出去。[來自 Daniel Prager ,稍有修改]

Erlang 是一個車隊,它們會互相協作把你送到任何你想去的地方。想要每隻腳各自操縱一輛車還是需要一些練習的,不過一旦學會了之後你就可以駕駛著它們通往其他方式難以企及的地方了。還有,你用了那麼多輛車,所以就算有幾輛壞掉也沒什麼可擔心的。

Forth 是你親手用套件組裝出來的車。你這輛車不論長相還是功能都沒必要和別人的一樣。不過,Forth 型號的車只能倒著走。

[Digg.com 網站上的評論,來自 256byteram(我忍不住要把它加上):]

FORTH LOVE IF HONK THEN !(譯註:抱歉我實在不知道這句話是啥意思……)

Fortran 是輛非常原始的車。它能跑得很快,前提是你要始終在完全筆直的道路上開。據說學開 Fortran 型汽車會導致你再也沒法學開其他型號的汽車了。

Java

Java 是輛家庭旅行車。它駕駛起來很容易,開起來速度也不會太快,不至於傷到你自己。

版本1:Haskell是輛設計極端優雅漂亮的車,傳聞它能開到非常極端的地形中去。當你試圖駕駛它的時候,它並不是真的沿著道路在前進的;實際上,它是不斷把自己和道路進行復制,每次成功復制之後,車在路上都會比上一次更遠一點。應該還是有可能按照傳統的方式來駕駛它的,不過你的數學能力不足以找出這個辦法來。

版本2:Haskell 並不是輛真的車,它是一個抽象的機器,能夠詳細地告訴你駕駛這個過程應該是什麼樣子的,如果你願意的話。你必須把這個抽象的機器放到另一台實際的機器裡面才能開動它,別問這個實際的機器是怎麼運行的。還有一種方法,你可以用多台抽象的機器造出另一台抽象的機器,然後把它交給那台實際的機器,這樣就能一個接一個地完成你的旅途了。[Monadic 的版本]

版本1:Lisp 看起來像一輛車,不過經過足夠的改裝,就能把它變成非常有效的一架飛機或一艘潛艇。

版本2:一開始它看起來一點兒都不像一輛車,不過時不時地你也能看到有人在開著它轉悠。終於有一天你決定多了解一下它,然後你意識到它其實是一輛能造出更多汽車的汽車。你把這個發現告訴了朋友,不過他們都大笑著說這些車看起來太奇怪了。至今你仍在車庫里留著一輛,期待著哪天能把它開上路去。[來自 Paul Tanimoto]

Mathematica是輛設計得很好的車,它從 Lisp 型汽車那裡借鑒了大量的東西,卻連一點兒應得的贊揚都不給它。它能通過方程計算出到達目的地最高效的路徑,只不過這要花上一大筆錢。

是輛設計給新手用的短途旅行車,通常都是開往那些 Mathmatica 型汽車常去的地方。在那些地方這車開起來非常舒服,不過只要你偏離了路線,哪怕只有一點點,它就會變得非常難以駕馭,以致於很多勢利的司機根本就不承認它是一輛車。

Ocaml 是輛非常性感的歐洲車。它不像 C 那麼快,但它從不出故障,所以結果你反而會花更短的時間到達目的地。不過因為這是法國,所有的控制裝置都不在它們平時該在的地方。

Perl 應該是輛挺酷的車,不過駕駛員手冊卻難以理解。另外,就算你能找到方法去駕駛一輛 Perl 型號的車,你也開不起來別人的 Perl 型汽車。

PHP 是輛熱狗車(Oscar Mayer Wienermobile),它非常古怪、又難以駕馭,但是所有人卻還是想開它。[來自 digg.com 網站的 CosmicJustice]

版本1:Prolog 是全自動的:你告訴它你的目的地是什麼樣子的,然後剩下的駕駛工作它就全搞定了。[Paul Graham附加的:]不過,大多數情況下,確認目的地所花的工夫,和你直接開過去也差不多了。

版本2:Prolog 這輛車上裝了一個獨特的試錯型 GPS 系統。在通往目的地的路上,它會一直往前開,如果走到死胡同了,它就調頭回來再試試別的路,如此不斷往復,一直到目的地為止。[我忘了是誰建議的這一條]

Python 是輛非常棒的給初學者用的車,就算沒有駕照也能開。除非你想開得超級快,或者想開去很危險的地方,否則你可能永遠都用不到別的車。

Ruby 這輛車是因為一次 Perl、Python 和 Smalltalk 三車相撞事故產生的。一個日本的機師找到了這些車的碎片然後拼成了一輛車,很多司機都覺得這比那三輛車加在一起還要好。不過也有些司機會發牢騷說 Ruby 型汽車的好多控制器都是重復的、甚至有三份,而這些重復的控制器在某些特別的情況下又稍有不同,這會讓這車開起來更麻煩。據傳說重新設計的工作已經在進行中了。

Smalltalk 是輛小型汽車,原本是設計給那些打算學駕駛的人用的,不過因為它設計得太棒了,即使那些有經驗的老司機都喜歡開它。它速度並沒有很快,不過你可以把它的任何一個零部件拿下來改造改造,讓它更符合你的期待。古怪的事情是,你其實並沒有真正地駕駛它,你只是發了條消息讓它去什麼地方,然後它要麼就開過去了,要麼就告訴你它不懂你在說啥。

版本1:匯編就只是個發動機。你得自己把車子造出來,還得在它跑的時候手動給它加油。不過只要你足夠小心,它就能像來自地獄的蝙蝠(a bat out of hell)一樣飛速前進。

版本2:匯編:你自己就是那輛車。

如果編程語言是種武器:

C 語言是 M1 式加蘭德步槍,很老但可靠。

C++是雙截棍,揮舞起來很強悍,很吸引人,但需要你多年的磨練來掌握,很多人希望改用別的武器。

Java 是 M240 通用彈夾式自動機槍,有時它的彈夾是圓的,但有時候不是,如果不是,當你開火時,會遇到 NullPointerException 問題,槍就會爆炸,你被炸死。

Scala 是 M240 通用機槍的變種,但它的使用手冊是用一種看不懂的方言寫的,很多人懷疑那隻是一些夢話。

JavaScript 是一把寶劍,但沒有劍柄。

Go 語言是一種自製的「if err != nil」發令槍,每一次發射後,你都必須要檢查它是否真的發射了。

Rust 語言是一種 3D 列印出的槍。將來也許真的能派上用場。

bash 是一個十分礙手的錘子,你掄起它時會發現所有東西看起來都像釘子,尤其是你的指頭。

Ruby 是一把外嵌紅寶石的寶刀,人們使用它通常是因為看起來很炫。

PHP 是水管子,你通常會把它的一段接到汽車的排氣管,另一端插進車窗里,然後你坐進車里,開動引擎。

Mathematica 是一種地球低軌道粒子大炮,它也許能夠干出很神奇的事情,但只有付得起費用的人才能使用它。

C#是一種強悍的激光大炮,架在一頭驢子上,如果從驢子上卸下來,它好像就發不出激光。

Prolog 語言是一種人工智慧武器,你告訴它要做什麼,它會照做不誤,但之後,它會弄幾個終結者出來,燒掉你的房子。

Lisp 語言是一把剃須刀,有很多款式。只有尋求刺激和危險的人才會使用它。

希望可以幫到您,謝謝!

熱點內容
伺服器essd什麼意思 發布:2025-01-23 14:51:24 瀏覽:268
spring上傳文件限制 發布:2025-01-23 14:50:30 瀏覽:310
奇亞幣p圖軟體存儲機 發布:2025-01-23 14:38:03 瀏覽:43
linux有用的命令 發布:2025-01-23 14:35:03 瀏覽:681
php顯示縮略圖 發布:2025-01-23 14:22:17 瀏覽:725
安卓哈利波特怎麼更換賬號 發布:2025-01-23 14:16:44 瀏覽:586
中國壓縮包 發布:2025-01-23 14:10:49 瀏覽:499
如果讓電腦訪問到公司伺服器 發布:2025-01-23 14:02:46 瀏覽:686
360瀏覽器腳本 發布:2025-01-23 13:54:42 瀏覽:565
合拍率演算法 發布:2025-01-23 13:50:59 瀏覽:257