CodeKata-Kata01:超市定价

CodeKata

即编程练习,Dave Thomas已经创造了21个Kata,我们可以在他的博客上使用:
http://codekata.com/

Kata1 超市定价

超市中的商品,有些容易定价,比如:一罐豆子定价$0.65.但是其他商品可能更加复杂,比如:

  • 三个一美元(如果买4,或5个呢?)
  • $1.99每磅 (4盎司要花多少呢?)
  • 买二赠一 (那么第三个商品有没有价格?)

我们需要考虑的问题:

  • 1.小数位的价格是否存在?
  • 2.取整的情况什么时候发生?
  • 3.如何保持审计跟踪你的定价决策?(how do you keep an audit trail of pricing decisions (and do you need to)? )
  • 4.花费 costs 和定价 prices 是一回事儿么?
  • 5.如果货架上有100罐商品是买二送一的,如何定价这些商品?(if a shelf of 100 cans is priced using “buy two, get one free”, how do you value the stock?)

练习目的:

针对这个松散的实验模型进行练习。找到尽量多的解决方法。考虑每个问题的多种权衡方案。

一种答案:

定价模型具有商品类 和 订单类。
商品具有两个属性 价格 和 优惠策略。
优惠策略,满减,满赠等:

//优惠策略1
if totalPrice>=X //满X元减Y元
    total_price -= Y;
//优惠策略2 
if totalNumber>=n //满n个减Z元
{//购买商品数大于n,每n个商品优惠x元。如商品A定价34美分,三个商品A优惠价为1美元,也就是每三个A优惠2美分。
    Z = x*floor(totalNumber/n);
    total_price -= Z;
}
//优惠策略3 
if totalNumber>=n //满n个赠m个
{//购买商品数大于n, 赠送m个
    totalNumber+= m;
}
  1. 不存在小数位的价格。价格最小单位一般为美分,以美元为单位,小数点后两位。采用美分为计量单位,即可用整型变量表示价格,可避免计算机某些语言小数计算出现的问题。
  2. 没有取整的情况。如果某三个一美元(如果买4,或5个)的一种方案,定价为
    C++
    price = ceil(100/3);//34美分

    优惠策略采用上文,策略2。
  3. 维护一个订单类,包括商品,购买数量和优惠策略。
  4. 商品花费和定价不同。定价是商品的属性,花费是价格应用优惠策略的产物。
  5. 100罐商品A应用买2赠1的优惠策略。那么商品A的定价规则为:
    C++
    //单个商品成本价
    costPrice = X;
    //最低价,当定价大于bottomPrice时,才能保证盈利。
    bottomPrice =(costPrice*100)(99*2/3+1);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值