zoukankan      html  css  js  c++  java
  • 设计算法能够计算出读者购买一批书的最低价格

    一、题目要求

    书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元,具体折扣如下所示:
                                   本数                  折扣
                                       2                       5%
                                       3                       10%
                                       4                       20%
                                       5                       25%
    根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
    设计算法能够计算出读者购买一批书的最低价格。
    要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。(截止日期2015-4-15晚18:00)
    二、设计思想
    经过课上对题目的分析,发现当购买1~5本书时按促销活动能以最低价格购买;当购买6~9本时,除了购买8本这种情况是以4本、4本来买为最低价格,其余只要以买5本为先就能计算出最低价格,所以对于13本,18本,23本。。。情况就得特殊考虑。首先以number是否等于3判断,等于3按折扣直接计算最低价格,否则再以(number%5+5)是否等于8两种情况来考虑设计程序,若等于8则sum=2*4*8*0.8+(m-1)*8*5*0.75,其中m-1因为m=number/5这里m包含了8中的一个5,否则只要以买5本为先计算,再把n=number%5为1~4依次加上计算。
    三、
    #include<iostream.h>
    void main()
    {
        int number;//订书数量
    	int m;//m=number/5
    	int n;//n=number%5
        double sum=0;
        cout<<"书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,"<<endl;
        cout<<"单独一卷售价8元, 具体折扣如下所示:"<<endl;
        cout<<"     本数                  折扣"<<endl;
        cout<<"       2                     5%"<<endl;
        cout<<"       3                     10%"<<endl;
        cout<<"       4                     20%"<<endl;
        cout<<"       5                     25%"<<endl;
    	cout<<"单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠,设计算法能够计算出读者购买一批书的最低价格";
        cout<<endl;
        cout<<"请输入读者要购买的书籍个数:"<<endl;
        cin>>number;
        m=number/5;
        n=number%5;
    	if(number==3)
    	{
    		sum=8*3*0.9;
    	}
    	else
    	{
    		if((n+5)==8)
    		{
    			sum=2*4*8*0.8+(m-1)*8*5*0.75;
    		}
    		else
    		{
    			switch(n)
    			{
    			case 0:
    				sum=m*40*0.75;
    				break;
    			case 1:
    				sum=m*40*0.75+8;
    				break;
    			case 2:
    				sum=m*40*0.75+16*0.95;
    				break;
    			case 4:
    				sum=m*40*0.75+32*0.8;
    				break;
    			}
    		}  
    	}
        cout<<"读者购买一批书的最低价格为:"<<endl;
        cout<<sum<<"元"<<endl;
    }
    

      

    四、截图

    对于13本应该是5本.4本.4本买

    对于18本应该是5本、5本、4本、4本买

    五、总结
    只要认真分析题目要求和题目中存在的规律,就可以用很简洁的算法设计出程序,再一次感觉到算法对于程序的重要性。
     
     
  • 相关阅读:
    169. Majority Element
    283. Move Zeroes
    1331. Rank Transform of an Array
    566. Reshape the Matrix
    985. Sum of Even Numbers After Queries
    1185. Day of the Week
    867. Transpose Matrix
    1217. Play with Chips
    766. Toeplitz Matrix
    1413. Minimum Value to Get Positive Step by Step Sum
  • 原文地址:https://www.cnblogs.com/2015tan/p/4428028.html
Copyright © 2011-2022 走看看