zoukankan      html  css  js  c++  java
  • 书店促销

    一、题目及要求:

    书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
    本数 折扣
    2 5%
    3 10%
    4 20%
    5 25%
    根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
    设计算法能够计算出读者购买一批书的最低价格

    二、 设计思想

    1、若购买的图书不超过5本,那么分一次购买且购买不同的书籍最便宜。
    2、若购买的图书本书大于5本,少于10本,我将买6,7,8,9本书的情况都列举出来,发现:
    买6本:分两次购买,5本1本最便宜
    买7本:分两次购买,5本2本最便宜
    买8本:分两次购买,4本4本最便宜
    买9本:分两次购买,5本4本最便宜
    3、当购买的图书大于10本时,由于买5本时折扣最高,所以用购买数量模5,余数+5就会对应6,7,8,9本的情况,买(商-1)次5本,这样可是价格最低。

    三、源程序代码

    #include "stdafx.h"

    #include "iostream.h"

    #define PRICE 8

    double discount[5]={0,0.05,0.1,0.2,0.25};

     

    double Caculate(int num1,int num2)        //计算该情况的价钱

    {

        double money,money1,money2;

        money1=(PRICE-PRICE*discount[num1-1])*num1;

        money2=(PRICE-PRICE*discount[num2-1])*num2;

        money=money1+money2;

        return money;

    }

    double Discount(int num)            //分情况讨论价钱

    {

        int k,yushu;

        double money1,money2,min;

        k=num/5;                    //取整

        yushu=num%5;                //取余

        min=num*PRICE;

        switch(k)

        {

            case 0:

                money1=(PRICE-PRICE*discount[num-1])*num;

                break;

            default:

                if(yushu==0)

                {

                    money1=(PRICE-PRICE*discount[4])*num;

                    return money1;

                }

                for(int i=1;i<(yushu+5);i++)

                {

                    money1=Caculate(i,(yushu+5)-i);

                    if(money1<min)

                        min=money1;

                }

                if(num>9)

                    money2=(k-1)*5*(PRICE-PRICE*discount[4]);

                else

                    money2=0;

                return min+money2;

        }

        return money1;

    }

    int main(int argc, char* argv[])

    {

        int booknum;

        double money;

        cout<<"请输入购买书籍的数量:";

        cin>>booknum;

        money=Discount(booknum);

        cout<<"最优惠的价格是"<<money<<"元"<<endl;

        return 0;

    }

    四、总结

    其实想法一开始是对的,后来由于计算问题,觉得这个想法有问题就想其他解决方法了。后来经同学老师的提示,原来是算错了。一直对计算不感冒,要不高考数学分数这么低

  • 相关阅读:
    刨析Maven(对pom.xml配置文件常用标签的解析)
    sublime text 3 使用技巧
    CSS3之渐变
    CSS3之过渡
    定位
    Java中的正则表达式
    CSS3之转换
    CSS布局
    导航条菜单制作总结
    Transition
  • 原文地址:https://www.cnblogs.com/bill927/p/4588334.html
Copyright © 2011-2022 走看看