您的位置:首页 > 其它

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

2016-06-04 11:34 344 查看
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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: