软件工程作业—最优买书问题
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最省钱,所以这是一个例外,需要考虑。
书店针对《哈利波特》系列书籍进行促销活动,一共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; }
相关文章推荐
- Android图像处理(五)镜像、倒影、drawBitmapMesh实现旗帜飘扬效果
- JavaScript之DOM HTML
- Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessException:
- 剑指Offer----面试题16:反转链表
- [JavaWeb]Servlet,Request,Response知识点补充
- C++日期类的运算符重载和简单边界条件
- 整理的JavaScript的数据类型
- 第十五周项目 程序填空(2)自定义普通函数实现add
- 复杂的 Hash 函数组合有意义吗?
- UVA - 1584 Circular Sequence
- 大型web系统架构详谈
- 项目中所使用的依赖 dependencies
- 举例讲解Python中字典的合并值相加与异或对比
- iOS 【UIKit-Interface Builder(面试)】
- Maximum Depth of Binary Tree
- TextView shape 和 selector
- Java Label
- Spring4.x+Hibernate4.x整合出现的问题
- Win7已装VisualStudio2012的情况下,安装SQL Server2008 R2后,无法获取SQL服务列表
- Spring boot实现数据库读写分离