33 - 交通工具
*此題須使用以下struct及function pointer實作,否則不予計分。
(使用規定架構進行實作並通過所有測資才予以給分,期末會進行檢查)
必須使用規定架構定義四種交通工具 (車、腳踏車、長途客運、摩托車)
但可以定義各個交通工具特有的屬性
如在車的結構中定義油錢、過路費、停車費。
題目敘述
BMI博士想從A點移動到B點,中間距離 x 公里,他想要知道在金錢花費限制在 y 元以下的情況,最快抵達B點需要多久的時間,是使用哪種交通工具?
利用結構 struct 定義
Car(車), Bike(腳踏車), Intercity Bus(長途客運), Scooter(摩托車)。
交通工具會有兩個的method需要實作,分別是計算金錢花費以及計算時間花費。
計算費用的方式
車需要考慮油錢、過路費、停車費。
腳踏車需考慮租賃費用。
客運根據站點計費。
摩托車需考慮油錢。
車:
1.油錢:汽油每公升a元。
汽車每100公里需要10公升汽油。
不足100公里以100公里計算 (如250公里,汽車要30公升汽油)
2.過路費: 每100公里 b元
過路費不足100公里以100公里計算 (如250公里,過路費為3b元)
3.停車費: c元
腳踏車:
1.租賃費用:a元
客運:
1.固定費用:a元
2.長途加收:超過100公里,每50公里多b元。
加收部分,不足50公里以50公里計算 (如170公里為a+2b)
摩托車:
1.油錢:汽油每公升a元。
摩托車每100公里需要4公升汽油。
不足100公里以100公里計算 (如250公里,摩托車要12公升汽油)
計算時間的方式
車每小時可以朝目的地移動100公里(100km/hr)
客運每小時可以朝目的地移動75公里(75km/hr)
摩托車每小時可以朝目的地移動50公里(50km/hr)
腳踏車每小時可以朝目的地移動20公里(20km/hr)
------程式碼架構規範之範例---------------------
#define TransportationText(TYPE) char name[20];
double speed;
double distance;
int (price)(struct TYPE);
double (time)(struct TYPE)
typedef struct car_s {
int oilPrice;
int parkPrice;
int tolls;
TransportationText(car_s);
} car_t;
int CarPrice(car_t* obj){
}
double CarTime(car_t* obj){
}
void CarCreate(car_t *obj){
strcpy(obj->name, "Car");
obj->speed = 100;
obj->price = CarPrice;
obj->time = CarTime;
}
輸入說明:
第一行輸入二正整數x,y,其中x代表起始點與目的地距離x公里,y代表預算
第二行輸入三正整數為汽車相關費用,分別是油價(元/公升)、停車費以及過路費(元/100km)
第三行輸入一正整數為腳踏車的租賃費用
第四行輸入二正整數為長途客運相關費用,分別是固定費用以及長途加收費用(元/50km)
第五行輸入一正整數為摩托車的油價(元/公升)
輸出說明:
輸出符合預算且花費時間最短的交通類型。
第一行輸出交通工具類型(Car,Bike,Intercity Bus,Scooter)。
第二行輸出實際花費金額。
第三行輸出花費時間(以小時計,取到小數點後兩位)。
如果沒有交通工具符合要求,輸出No Transportation (參考範例測資5)
範例輸入1 說明
150 1000 (第一行輸入二正整數x,y,其中x代表起始點與目的地距離x公里,y代表預算)
30 100 50 (第二行為汽車的相關費用,輸入油錢(元/公升)、停車費以及過路費(元/100km))
50 (第三行為腳踏車的相關費用,輸入租賃費用)
50 30 (第四行為長途客運的相關費用,輸入固定費用以及長途加收費用(元/50km))
30 (第四行為摩托車的相關費用,輸入油錢(元/公升))
範例輸出1 說明
Car
800
1.50
汽車的費用= 3010⌈150/100⌉ + 100 + 50⌈150/100⌉= 30102 + 100 + 502= 800元
汽車所需時間= 150/100= 1.50hr
腳踏車的費用= 50元
腳踏車所需時間= 150/20= 7.50hr
長途客運的費用= 50 + 30⌈(150-100)/50⌉= 50 + 301= 80元
長途客運所需時間= 150/75= 2.00hr
摩托車的費用= 304⌈150/100⌉= 3042= 240元
摩托車所需時間= 150/50= 3.00hr
因為預算為1000元,
所以在預算內,花費時間最短的交通工具為汽車,花費為800元,需要時間為1.5hr。
Sample Input 1:
150 1000
30 100 50
50
50 30
30
Sample Output 1:
Car
800
1.50
Sample Input 2:
270 800
35 0 0
50
70 30
30
Sample Output 2:
Intercity Bus
190
3.60
Sample Input 3:
70 90
27 100 0
50
100 30
20
Sample Output 3:
Scooter
80
1.40
Sample Input 4:
480 20
30 50 70
20
70 100
30
Sample Output 4:
Bike
20
24.00
Sample Input 5:
100 50
100 200 300
500
90 60
25
Sample Output 5:
No Transportation