买哈利波特书

 1 #include<iostream>
 2 using namespace std;
 3  
 4 
 5 void Cheapest(int number_book)               //计算最合适的购买方案
 6 {
 7     int result,count;                        //定义除数和余数,除数代表整套的本数,余数代表余下的需要找规律的本数
 8     double cost,remainder[5]={0,0.05,0.1,0.20,0.25};      //定义最后的价格,表示折扣的数组
 9     if(number_book<=0)                                   //出错判断
10     {
11         cout<<"error"<<endl;
12     }
13     if(number_book>0)                                
14     {
15         result=number_book/10;
16         count=number_book%10;
17         if(count==8)                             //计算余数为8的那种情况
18         {
19             cost=2*result*30+8*4*0.2*2;
20             cout<<"购买"<<2*result<<"套及2种四本不同的哈利波特书"<<endl;
21         }
22         else
23         {
24             if(count<5)                                //计算余数小于5的那种情况
25             {
26                 cost=2*result*30+8*count*(1-remainder[count-1]);
27                 cout<<"购买"<<2*result<<"套及另外"<<count<<"本不同的哈利波特书"<<endl;
28             }
29             if(count>=5)                               //计算余数大于5的那种情况
30             {
31                 count=count-5;
32                 cost=(2*result+1)*30+8*count*(1-remainder[count-1]);
33                 cout<<"购买"<<2*result+1<<"套及另外"<<count<<"本不同的哈利波特书"<<endl;
34             }
35         }
36         
37     }
38     cout<<"购买这些书的最便宜的价格为:"<<endl;
39     cout<<cost<<endl;
40 }
41 int main()
42 {
43     int Num;
44     cout<<"请输入购买哈利波特书的数目:"<<endl;
45     cin>>Num;
46     cout<<"购买这些书的方案:"<<endl;
47     Cheapest(Num);
48     return 0;
49 }
50     

 一、题目:

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

             本数         折扣

             2     5%

             3     10%

             4     20%

             5     25%

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

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

二、实验思路:1、根据实验规律可知,当购买的本数不大于5本时,买的几本都必须是不同的书,折扣力度最大,购买的书在大于5本小于10本时,买一整套5本的,

                 剩下的几本买成不同的折扣力度最大,但是有一种情况例外,就是8本,这样是购买两套4本不同的书最便宜,当购买的本数大于10本时,规律和十本相同。
        2、根据购买者买书的数量除以10,购买的几个整套的10本按照两整套5本的计算,剩下的余数按以上规律计算。
        3、计算余数时,先把余数是8本的计算出来,排除8本的情况,剩下的情况再分成本数大于5和小于5的两种情况。

三、实验截图:

1、余数有8

3、余数大于5

3、没有余数,买整套的书

四、实验总结:

这次的题目算是比较简单,但是是老师给出我们实验规律前提下,老师在课上留的题目,思路我们都没有想出来,当老师告诉我们思路时,我们感觉到这个题目十分的简单,所以这种题型就是算法简单,但是不容易想到,所以我们要锻炼自己的思维能力,如果不思考,只是根据别人的思路来写代码的话,永远只是一个程序员。

原文地址:https://www.cnblogs.com/luxin123/p/5556692.html