Teil eines Programms, an dem ich arbeite, implementiert eine Funktion, die das Paketgewicht als Argument berücksichtigt und die Versandkosten basierend auf diesem Gewicht berechnet. Die Kriterien für die Kosten/lb ist wie folgt:C++ Berechnung der Versandkosten basierend auf Gewicht
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
habe ich eine if-else if-if, um die Berechnungen zu machen, aber das Gefühl, es ist ein bisschen wiederholend:
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;
Also, die Frage ist ... ist dies der beste Weg, um diese Aufgabe zu erfüllen, oder sollte ich nach einer anderen Lösung suchen?
Was Sie haben, ist in Bezug auf gute Praxis makellos. Es gibt nichts Wiederholendes, was Ihre Verwendung von if-else if-else betrifft. – VHS
Außerdem ist hier nichts rekursiv. –
Angenommen, dies sind die einzigen Ebenen, das sieht gut aus. – Qix