• 购书思想课堂作业4.14


    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.个人总结

      算法很简单,方法很重要

  • 相关阅读:
    1.惨不忍睹凌乱的定时任务
    二维码名片
    给定的逗号分隔的数字字符串转换为Table
    sql 列集合转换成逗号分隔的字符类型
    linq 分组
    触发器
    整合思路、步骤
    整合注意事项
    配置文件
    Struts2的线程安全性
  • 原文地址:https://www.cnblogs.com/boluoland/p/4426341.html
Copyright © 2020-2023  润新知