電子商務系統中,每筆訂單都有三個屬性:
Amount(金額):訂單總價,範圍 0~20000
ShippingDays(運送天數):下單到到貨天數,範圍 1~30
CustomerRating(顧客信用評分):範圍 0~100
此外,系統對於訂單有折扣策略:
食品類 (FOOD):9 折
其他類別:原價
訂單分類如下:
HighPriority:高金額 (>=10000) 且 顧客評分高 (>=70) 且 快速運送 (<=3 天)
MediumPriority:高金額 (>=10000) 或 顧客評分高 (>=70),但不符合 HighPriority
LowPriority:低金額 (<10000) 且 顧客評分低 (<70) 且 慢速運送 (>7 天)
Standard:其他訂單
給定主要執行程式main.c (題號.c)、以及Header檔function.h (題號.h);請試著完成Header檔中未實現的函式:SetOrderValue()、CalculateFinalAmount()、GetOrderPriority()、CountPriority()
function.h:
methods:
-float CalculateFinalAmount(Order *firstOrder) – 需不斷拜訪傳進的 Order 記憶體的下一個 Order(或透過陣列指標移動),並依商品類別計算折扣後金額,返回最後金額
-enum OrderPriority GetOrderPriority(Order *firstOrder) – 需不斷拜訪傳進的 Order 記憶體,依金額、顧客信用評分、運送天數判斷優先級,返回該優先級
-void CountPriority(Order *firstOrder, int n, int *high, int *medium, int *low, int *standard) – 需透過迴圈和指標拜訪所有 Order,統計每個優先級訂單數量
hint:
function.c
每筆訂單包含以下資料:
Name Type Amount ShippingDays CustomerRating
……
Name:商品名稱(字串,長度 ≤ 50)
Type:商品類別(整數,0=ELECTRONICS, 1=CLOTHING, 2=FOOD, 3=BOOK)
Amount:訂單金額(整數,0 ≤ Amount ≤ 20000)
ShippingDays:運送天數(整數,1 ≤ ShippingDays ≤ 30)
CustomerRating:顧客信用評分(整數,0 ≤ CustomerRating ≤ 100)
Note:
統計所有訂單的優先級數量,輸出格式如下:
HighPriority: x
MediumPriority: y
LowPriority: z
Standard: w
每筆訂單折扣後的最終金額:
Name final amount: value
若商品類別為 FOOD,最終金額需打 9 折
value 保留兩位小數
Note: