我正在开发的程序的一部分实现了将包裹重量作为参数并根据该重量计算运费的功能。对成本/磅的标准如下: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