软件工程作业—最优买书问题

1. 题目:

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

本数 折扣 2    5%

             3    10%

             4    20%

             5    25%

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

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

2. 设计思想:

      如果购买的本书小于等于5本,则有多少本买多少本不一样的。如果大于5本,则需要考虑。比如6本,是3 3优惠,还是5 1优惠等等。每5个为一个循环,所以只需要考虑6到10就可以了。其中6 7 9都是5和余数最省钱。而8则是4 4最省钱,所以这是一个例外,需要考虑。

复制代码
#include<iostream>
using namespace std;


int main()
{
    int num;
    double money;
    cout<<"请输入要买图书本书:";
    cin>>num;
    
    if(num<=0)
    {
        cout<<"请重新输入要买图书个数:";
     }
    else if(num>0)
    {
        int m=num/5;
        int n=num%5;
        if(m==0)
        {
            if(n==0)
            {
                money=0;
            }
            else if(n==1)
            {
                money=8;
            }
            else if(n==2)
            {
                money=8*2*(1-0.05);
            }
            else if(n==3)
            {
                money=8*3*(1-0.10);
            }
            else if(n==4)
            {
                money=8*4*(1-0.20);
            }
        }
        else if(m>0)
        {
            if(n==0)
            {
                money=5*m*8*(1-0.25);
            }
            else if(n==1)
            {
                money=5*8*m*(1-0.25)+8;
            }
            else if(n==2)
            {
                money=5*8*m*(1-0.25)+8*2*(1-0.05);
            }
            else if(n==3)
            {
                money=5*8*(m-1)*(1-0.25)+8*4*2*(1-0.20);
            }
            else if(n==4)
            {
                money=5*8*m*(1-0.25)+8*4*(1-0.20);
            }
        }
    }
    cout<<"最低价格为:"<<money<<"元"<<endl;
    return 0;
}
复制代码

转载于:https://www.cnblogs.com/java-meng/p/5558462.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值