gpt4 book ai didi

C++根据重量计算运费

转载 作者:行者123 更新时间:2023-11-30 03:36:42 25 4
gpt4 key购买 nike

我正在处理的程序的一部分实现了一个函数,该函数将包裹重量作为参数并根据该重量计算运费。成本/磅的标准如下:

        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-if 进行计算,但感觉有点重复:

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;

所以,问题是……这是完成此任务的最佳方法,还是我应该寻找不同的解决方案?

最佳答案

首先,您的代码看起来清晰且没问题。

当然,您可以使用累积方法对公式的冗余部分进行去重:

float shipPriceF = TIER_1_RATE; // to be paid anyway

if (shipWeightF > TIER_2_WEIGHT) // add the tier 2 if necessary
{
shipPriceF += (min(shipWeightF, TIER_3_WEIGHT) - TIER_2_WEIGHT) * TIER_2_RATE;
}
if(shipWeightF > TIER_3_WEIGHT) // add the tier 3 if really necessary
{
shipPriceF += (shipWeightF - TIER_3_WEIGHT) * TIER_3_RATE);
}

好吧,这甚至可以进一步简化:

float shipPriceF = TIER_1_RATE 
+ max(min(shipWeightF,TIER_3_WEIGHT)-TIER_2_WEIGHT,0) * TIER_2_RATE
+ max(shipWeightF-TIER_3_WEIGHT,0) * TIER_3_RATE;

对于 3 个尺度,这个合成公式可能没问题。但是,如果您想要更大的灵 active ,您可以考虑迭代速率 vector 而不是使用常量。这将允许可变数量的比例。如果您确定该公式始终是累进的(例如“高于 + 超出部分的新单价”),请使用累积方法。

关于C++根据重量计算运费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40569159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com