l 问题
某B2C网站需要计算订单的邮寄费用,大部分情况下,邮费有包裹的总重量决定,但是,当订单的价格超过300美元时,提供免费付运。详细规则如下面的mailCharge表所示:
field |
minVal |
maxVal |
Charge |
cost |
300 |
1000000 |
0 |
weight |
0 |
1 |
10 |
weight |
1 |
5 |
20 |
weight |
5 |
10 |
25 |
weight |
10 |
1000000 |
40 |
该表记录了各个字段在各种取值范围内时的邮费。例如,第一条记录表示,cost字段取值在300与1000000之间的时候,邮费为0(免费付运);第二条记录表示,weight字段取值在0到1(kg)之间时,邮费为10(美元)。
下面是该网站的一些订单:
id |
cost |
weight(kg) |
Josh1 |
150 |
6 |
Drake |
100 |
3 |
Megan |
100 |
1 |
Josh2 |
200 |
3 |
Josh3 |
500 |
1 |
请计算这些订单的详细邮费。
l 思路
大致思路:分别找出资费记录中filed字段为cost和weight的记录,再对着整个订单记录进行循环。先判断订单记录中的cost值是否满足免费标准,不满足则根据重量判断邮费档次。
l 代码
|
A |
B |
C |
D |
1 |
=file("C:\\txt\\mailCharge.txt").import@t() |
/读邮费表 |
|
|
2 |
=file("C:\\txt\\testOrder.txt").import@t() |
/读订单表 |
|
|
3 |
=A1.select(FIELD=="COST") |
/读取免费记录 |
|
|
4 |
=A1.select(FIELD=="WEIGHT").sort(-MINVAL) |
/读取按重量计费记录 |
|
|
5 |
=A2.derive(POSTAGE) |
/给订单表增加邮费记录 |
|
|
6 |
for A5 |
|
|
|
7 |
|
if A3.MINVAL < A6.COST |
/当订单价格超过免费标准时 |
|
8 |
|
|
>A6. POSTAGE= A3.CHARGE |
/免费付运 |
9 |
|
|
next |
|
10 |
|
for A4 |
|
|
11 |
|
|
if A6.WEIGHT > B10.MINVAL |
/根据重量判断邮费档次 |
12 |
|
|
|
>A6. POSTAGE= B10.CHARGE |
13 |
|
|
|
next A6 |
l 结果