哈利波特书店促销

Posted 斗破2

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了哈利波特书店促销相关的知识,希望对你有一定的参考价值。

一、题目要求    

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

                               本数                  折扣

                                   2                       5%

                                   3                       10%

                                   4                       20%

                                   5                       25%

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

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

要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。

二、设计思想

 首先前5本书的折扣肯定是全部直接买折扣最低。然后从第6本到第9本时价格最低为:

  第六本:5加1

  第七本:5加2

  第八本:4加4(特殊)

  第九本:5加4

所以只需要将所需要买的书除以10之后,然后将余数和这几个相比较,分为0~5,6~9两种大情况,写好分配策略。最特殊的自然是8本的时候,然后在计算价格就可以了。

三、代码实现

//哈利波特书店促销 王文奇 20132980 2016/5/31
#include<iostream>
using namespace std;

int main()
{
    int num=1, rem;//数量和余数
    float price;//价格
    float discount[] = { 1, 1, 0.95, 0.9, 0.8, 0.75 };//折扣
    
    while (num>0)  //为0时跳出
    {
        cout << "请输入要购买的本数(按0结束):";
        cin >> num;
        rem = num % 10;//本数除10取余
        if (rem>5)  //余数大于5时
        {
            if (rem == 8)  //8本用4+4更便宜
            {
                price = (num / 10) * 2 * 30 + 4* 8 * 0.8 * 2;
                cout << "整套购买" << (num / 10) * 2 << "套," << "再购买两套,每套随意选四本不同的书,共" << price << "" << endl;
            }
            else  //其他6,7,9都是5本+剩下的更便宜
            {
                price = ((num / 10) * 2 + 1) * 30 + num % 5 * 8 * discount[num % 5];
                cout << "整套购买" << (num / 10) * 2 + 1 << "套," << "再随意购买" << num % 5 << "本不同的书,共" << price << "" << endl;
            }

        }
        else  //余数为0,1,2,3,4,5时
        {
            if (rem == 0 || rem == 5)  //0,5直接买整套
            {
                price = (num / 5) * 30;
                cout << "整套购买" << num / 5 << "套,共" << price << "" << endl;
            }
            else  //1,2,3,4就买整套,剩下的直接买
            {
                if (num > 5)
                {
                    price = (num / 5) * 30 + num % 5 * 8 * discount[num % 5];
                    cout << "整套购买" << num / 5 << "套," << "再随意购买" << num % 5 << "本不同的书,共" << price << "" << endl;
                }
                else
                {
                    price = num % 5 * 8 * discount[num % 5];
                    cout << "随意购买" << num % 5 << "本不同的书,共" << price << "" << endl;
                }
            }
        }

        cout << endl;
    }
    

    return 0;
}

 

四、实现截图

五、个人总结

      其实,这次并没有想象的那么难,只要掌握了规律,一切问题就迎刃而解了。

以上是关于哈利波特书店促销的主要内容,如果未能解决你的问题,请参考以下文章

课堂练习-促销书

课堂练习-促销书

系列书籍进行促销活动

动态规划——买书问题

买哈利波特书算法

购书方案