我正在開發的程序的一部分實現了將包裹重量作爲參數並根據該重量計算運費的功能。對成本/磅的標準如下:C++根據重量計算運費成本
Package Weight Cost
-------------- ----
25 lbs & under $5.00 (flat rate)
26 - 50 lbs above rate + 0.10/lb over 25
50 + lbs above rate + 0.07/lb over 50
我用了一個if的if else,如果做出的計算,但感覺它有點重複:
const int TIER_2_WEIGHT = 25;
const int TIER_3_WEIGHT = 50;
const float TIER_1_RATE = 5.00;
const float TIER_2_RATE = 0.10;
const float TIER_3_RATE = 0.07;
float shipPriceF;
if(shipWeightF <= TIER_2_WEIGHT)
{
shipPriceF = TIER_1_RATE;
}
else if(shipWeightF <= TIER_3_WEIGHT)
{
shipPriceF = ((shipWeightF - TIER_2_WEIGHT) * TIER_2_RATE) +
TIER_1_RATE;
}
else
{
shipPriceF = ((shipWeightF - TIER_3_WEIGHT) * TIER_3_RATE) +
((TIER_3_WEIGHT - TIER_2_WEIGHT) * TIER_2_RATE) +
TIER_1_RATE;
}
return shipPriceF;
因此,問題是......這是完成這項任務的最佳方式,還是我應該尋找不同的解決方案?
你有什麼是完美的做法完美無暇。就使用if-else if-else而言,沒有任何重複。 – VHS
此外,這裏沒有任何遞歸。 –
假設這些是唯一的層次,這看起來很好。 – Qix