• 购买图书最低价格


    一、程序要求

      书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:

      

      根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。

      设计算法能够计算出读者购买一批书的最低价格。

    二、程序设计思想

      买一本书时,只有一种情况,8元;

      买两本书时,有2种情况:

        1. 买2本一样的书,2*8=16元

        2. 买2本不一样的书,2*8-2*8*5%=15.2

      买三本书时,有3种情况:

        1. 买3本一样的书,3*8=24元

        2. 买2本卷1,1本卷2,3*8-8*2*5%=23.2

        3. 买3本不一样的,8*3-3*8*10%=21.6

      买四本书时,有4种情况:

        1. 买4本一样的书,4*8=32元

        2. 买3本卷1,1本卷2,8*4-2*8*5%=31.2

        3. 买2本卷1,2本卷2,8*4-8*2*2*5%=30.4

        4. 买3本不一样的书,8*4-8*3*10%=29.6

        5. 买4本不一样的书,8*4-8*4*20%=25.6

      买5本书时,有7种情况:

        1. 买5本一样的书,5*8=40元

        2. 买4本卷1,1本卷2,8*5-2*8*5%=39.2

        3. 买3本卷1,2本卷2,8*5-8*2*2*5%=38.4

        4. 买3本卷1,1本卷2,1本卷3,8*5-8*3*10%=37.6

        5. 买2本卷1,2本卷2,1本卷3,8*5-8*3*10%-8*2*5%=36.8

        6. 买4本不一样的书,8*5-8*4*20%=33.6

        7. 买5本不一样的书,8*5-8*5*25%=30

      买6本书时,有10种情况:

        1. 买6本一样的书,6*8=48元

        2. 买5本卷1,1本卷2,6*8-2*8*5%=47.2

        3. 买4本卷1,2本卷2,6*8-2*8*2*5%=46.4

        4. 买3本卷1,3本卷2,6*8-3*8*2*5%=45.6

        5. 买4本卷1,1本卷2,1本卷3,6*8-3*8*10%=45.6

        6. 买3本卷1,2本卷2,1本卷3,6*8-3*8*10%-8*2*5%=44.8

        7. 买2本卷1,2本卷2,2本卷3,6*8-2*8*3*10%=43.2

        8. 买3本卷1,1本卷2,1本卷3,1本卷4,6*8-8*4*20%=41.6

        9. 买2本卷1,2本卷2,1本卷3,1本卷4,6*8-8*4*20%-8*2*5%=40.8

        10. 买5本不一样的书,6*8-8*5*25%=38

      买7本书时,有13种情况:

        1. 买7本一样的书,7*8=56元

        2. 买5本卷1,1本卷2,7*8-2*8*5%=55.2

        3. 买4本卷1,2本卷2,7*8-2*8*2*5%=54.4

        4. 买3本卷1,3本卷2,7*8-3*8*2*5%=53.6

        5. 买5本卷1,1本卷2,1本卷3,7*8-3*8*10%=53.6

        6. 买4本卷1,2本卷2,1本卷3,7*8-3*8*10%-8*2*5%=52.8

        7. 买3本卷1,3本卷2,1本卷3,7*8-3*8*10%-2*8*2*5%=52

        8. 买2本卷1,2本卷2,2本卷3,7*8-2*8*3*10%=51.2

        9. 买4本卷1,1本卷2,1本卷3,1本卷4,7*8-8*4*20%=49.6

        10. 买3本卷1,2本卷2,1本卷3,1本卷4,7*8-8*4*20%-8*2*5%=48.8

        11. 买2本卷1,2本卷2,2本卷3,1本卷4,7*8-8*4*20%-8*3*10%=47.2

        13. 买2本卷1,2本卷2,1本卷3,1本卷4,1本卷5,7*8-8*5*25%-8*2*5%=45.2

      由此可见,购买的每套图书里的本数最多,折扣越大,价格越低。

    三、源程序代码

     1 //购买图书最低价格
     2 //张莹荧 2016-06-03
     3 
     4 #include <iostream>
     5 using namespace std;
     6 void main()
     7 {
     8     int n;  //书的本数
     9     int a = 0, b = 0; //a为当本数大于5的时候,表示有几个5,则计算几倍的5本价钱。b表示剩余的不足5本的价格。
    10     double price;  //sum表示总价格
    11     cout << "请输入要买的书的本数:" << endl;
    12     cin >> n;
    13 
    14     a = n / 5;
    15     b = n % 5;
    16 
    17     if (n == 3)
    18         price = 3 * 8 * (1 - 0.1);
    19     else
    20     {
    21         if (b == 0)
    22             price = a * 5 * 8 * (1 - 0.25);
    23         if (b == 1)
    24             price = a * 5 * 8 * (1 - 0.25) + 8;
    25         if (b == 2)
    26             price = a * 5 * 8 * (1 - 0.25) + 2 * 8 * (1 - 0.05);
    27         if (b == 3)
    28             price = (n - 8) / 5 * 5 * 8 * (1 - 0.25) + 4 * 2 * 8 * (1 - 0.2);
    29         if (b == 4)
    30             price = a * 5 * 8 * (1 - 0.25) + 4 * 8 * (1 - 0.2);
    31     }
    32     cout << "购买书的最低价格为:" << price << "元。" << endl;
    33 }

    四、运行结果截图

      

      

      

    五、项目计划日志:

              周活动总结表

    姓名:张莹荧                             日期:2016-06-03

    日期/任务    听课     编写程序    阅读课本   准备考试                        日总计  
    周一5.30 100   30 120     250
    周二   30 30 120     180
    周三   180   180     360
    周四 100 30    120     250
    周五   30         30
    周总结 200 270 60 540     1070

    阶段时间和效率                      周数:14

    不包括上一周在内的累计时间

    总计 200 270 60 540       1070
    平均 200 270 60 540     1070
    最大 200 270 60 540     1070
    最小 200  270 60 540     1070

    以前各周的累计时间

    总计 200 270 60 540       1070
    平均 200 270 60 540     1070
    最大 200 270 60 540     1070
    最小 200 270 60 540     1070

    六、时间记录日志:

      学生:张莹荧                 日期:2016-06-03

      教师:王建民                 课程: PSP  

    日期 开始时间 结束时间 中断时间 净时间 活动 备注
    5.30

    14:00

    15:50

    10

    100

    上课

    课间休息
    5.31

    10:00

    10:30

    0

    30

    编程  
    6.1

    14:30

    17:40

    10

    180

    编程

    中间休息
    6.2

    12:30

    14:00

    13:00

    15:50

    0

    10

    30

    100

    编程

    上课

     课间休息

    6.3

    11:00

    11:30

    0

    30

    编程

     

    七、缺陷记录日志:

      学生: 张莹荧 

      日期: 2016-06-03 

      教员:  王建民     

      程序号:  14  

     日期  编号 类型 引入阶段 排除阶段 修复时间 修复缺陷
     6.03  1 算法 编码 查资料、问同学 30min  
    描述:程序设计问题,不知道该如何入手。
     
     
     
     
     

    八、实验总结

      题本身很简单,只要从第一本开始列出来,找出其中的规律,程序思路很容易就出来了。

  • 相关阅读:
    Python学习——网站收集
    基于三轴加速计的运动识别与控制系统
    Unity小记
    Unity3d 札记-Survival Shooting 知识点汇总--受到伤害时屏幕闪血光如何做到
    Unity3d 札记-Survival Shooting 知识点汇总--Navigation 自动寻路的运用
    Unity3d 札记-Survival Shooting 知识点汇总--AnimationController
    Unity3d札记 --TanksTutorial收获与总结
    Unity3d 札记-Tanks Tutorial 知识点汇总--游戏流程的控制
    Unity3d 札记-Tanks Tutorial 知识点汇总---如何发射子弹
    Unity3d 札记-Tanks Tutorial 知识点汇总---子弹爆炸效果的实现
  • 原文地址:https://www.cnblogs.com/zhyying/p/5608627.html
Copyright © 2020-2023  润新知