码迷,mamicode.com
首页 > 其他好文 > 详细

购书思想课堂作业4.14

时间:2015-04-14 23:17:31      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

1.题目:

  

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

                               本数                  折扣

                                   2                       5%

                                   3                       10%

                                   4                       20%

                                   5                       25%

n根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
n设计算法能够计算出读者购买一批书的最低价格。

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

 

2.设计思想

  当购书数目为0~5时,不需讨论。

  当购书数为6时,经过计算,5+1的方案最便宜,

  当购书数为7时,经过计算,5+2的方案最便宜。

  当购书数为8时,经过计算,4+4的方案最便宜。

  但购书数为9时,经过计算,5+4的方案为最佳。

  这里我们可以看出除了购书数为8时,没有5本折扣,其他数目都由5方案和其他方案组成。

  而当购书数目n大于10时,我们可以把n看成:n=5*b+a,也就是一个5的倍数加上一个6~9之间的数,因此对于任何数目,主要的购书分歧在于这6~9本应该如何购买,购买方案参照上述

  于是按照这个思想,我们设计程序时可以这样做,接受购书的数目num,把num用10mod,如果余数是6~9之间,就mod10处理除数和余数,如果是1~4之间,就减去5之后再mod10处理除数和余数,如果是余数是5和0的话,就直接按5方案处理。

3.源代码 

#include<iostream.h>
void show(int x , double &jia)
{
	if(x==6)
	{
		cout<<" 5 1 ";
		jia=jia+5*8*0.75+8;
	}
	if(x==7)
	{
		cout<<" 5 2 ";
		jia=jia+5*8*0.75+2*8*0.95;
	}
	if(x==8)
	{
		cout<<" 4 4 ";
		jia=jia+8*8*0.8;
	}
	if(x==9)
	{
		cout<<" 5 4 ";
		jia=jia+5*8*0.75+4*8*0.8;
	}
}
void main()
{
	cout<<"请输入要购买的书的数量:"<<endl;
	int num,a,b,i;
	double jia=0;
	cin>>num;
	cout<<"最便宜的购书方案:"<<endl;
	a=num%10;
	if(a>5)
	{
		b=num/5;
		for(i=1;i<=b;i++)
		{
			cout<<" 5 ";
		}
		jia=jia+b*8*5*0.75;
		show(a,jia);
	}
	else if(a<5&&a>0)
	{
		a=a+5;
		b=num/5-1;
		for(i=1;i<=b;i++)
		{
			cout<<" 5 ";
		}
		jia=jia+b*8*5*0.75;
		show(a,jia);
	}
	else
	{
		b=num/5;
		for(i=1;i<=b;i++)
		{
			cout<<" 5 ";
		}
		jia=jia+b*8*5*0.75;
	}
	cout<<endl<<"一共花费"<<jia<<"元"<<endl;
}

3.截图

技术分享技术分享技术分享

 

4.个人总结

  算法很简单,方法很重要

 

购书思想课堂作业4.14

标签:

原文地址:http://www.cnblogs.com/boluoland/p/4426341.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!