哈利波特最优价格

一、题目

      书店针对《哈利波特》系列书籍进行促销活动,一共5卷,单独一卷售价8元,具体折扣如下:本数对应的折扣分别为:2本—5%,3本—10%,4本—20%,5本—25%。根据购买的卷数以及本数,会对应不同的折扣规则情况。单独一本书只会对应一个折扣规则。设计算法能够计算出读者购买一批书的最低价格。

二、思路

     以10本为基础,只用求余数的最优价格即可——只需考虑10本以内的。对于5本及5本以内的直接乘上折扣即可,对于超过5本的,则考虑情况,例如7本分为3,4。1,6.两种情况。用for循环列出所有情况,将值存入数组。比较大小求出最小值。在加上10本的基础价格。即可。

三、源代码

#include<iostream.h>
double f1(int i)
{
    double a;
    switch(i)
    {
        case 5: a=0.75;break;
        case 4: a=0.80;break;
        case 3: a=0.90;break;
        case 2: a=0.95;break;
        case 1: a=1.0;break;
    }
    return a;
}
int main()
{
    int numyu,num10,s,i;
    double c;
    double sum;
    int BookNum;
    cout<<"输入购买本数:";
    cin>>BookNum;
    numyu=BookNum%10;
    num10=BookNum/10;
    sum=num10*10*8*0.75;
    double sum1,sum2;
    double b[10];
    int p=0;
    if(numyu>5)
    {
        for(i=5;i>=(numyu+1)/2;i--)
        {
            c=f1(i);
            sum1=c*i*8;
            c=f1(numyu-i);
            sum2=c*(numyu-i)*8;
            b[p++]=sum1+sum2;
        }
        double min=b[0];
        for(i=1;i<p;i++)
        {
            if(min>b[i])
            {
                min=b[i];
            }
        }
        cout<<"最低购买:"<<min+sum;
    }
    else
    {
        c=f1(numyu);
        sum1=numyu*8*c;
        cout<<"最低购买:"<<sum1+sum;
    }
    return 0;
}

 四、实验截图

    

五、实验总结

    本次实验刚开始遇到如何根据书本数目返回折扣值,最终用switch的方法将五种折扣方案返回。对于此次实验不满意的地方就是

我写的时候没有养成写注释的习惯,这应该是差大弊端。在以后的实验中会将注释方面做个重点,强迫自己的思路有条目,而不是盲

目的敲代码。

posted on 2015-04-15 11:17  博客找田雨  阅读(236)  评论(0编辑  收藏  举报