• 个人作业十八:购买图书


    书店促销

     

    一、设计思路

    前提,没有买重复书的情况是最优惠的。
    总共买n本书,可以分解成5k+(n-5k),k=0,1,2,...
    1、如果k=0,n本不重复的价钱是最优惠的;
    2、如果k=1,算出每一种情况的折扣并比较,最后挑选出折扣最大的;
    3、如果k>1,最后的(n-5k)再按照第二种情况进行计算。

    二、源代码

    // 最优价钱.cpp : Defines the entry point for the console application.

    //

    #include "stdafx.h"

    #include "iostream.h"

    #define PRICE 8

    double discount[5]={0,0.05,0.1,0.2,0.25};

    double Caculate(int num1,int num2)        //计算该情况的价钱

    {

        double money,money1,money2;

        money1=(PRICE-PRICE*discount[num1-1])*num1;

        money2=(PRICE-PRICE*discount[num2-1])*num2;

        money=money1+money2;

        return money;

    }

    double Discount(int num)            //分情况讨论价钱

    {

        int k,yushu;

        double money1,money2,min;

        k=num/5;                    //取整

        yushu=num%5;                //取余

        min=num*PRICE;

        switch(k)

        {

            case 0:

                money1=(PRICE-PRICE*discount[num-1])*num;

                break;

            default:

                if(yushu==0)

                {

                    money1=(PRICE-PRICE*discount[4])*num;

                    return money1;

                }

                for(int i=1;i<(yushu+5);i++)

                {

                    money1=Caculate(i,(yushu+5)-i);

                    if(money1<min)

                        min=money1;

                }

                if(num>9)

                    money2=(k-1)*5*(PRICE-PRICE*discount[4]);

                else

                    money2=0;

                return min+money2;

        }

        return money1;

    }

    int main(int argc, char* argv[])

    {

        int booknum;

        double money;

        cout<<"请输入购买书籍的数量:";

        cin>>booknum;

        money=Discount(booknum);

        cout<<"最优惠的价格是"<<money<<"元"<<endl;

        return 0;

    }

    三、运行截图

                           

    四、心得体会

      因为我数学不太好,写这个程序时气死我了,一开始测试结果跟我用计算器算的不同,我以为是我的算法写错了,于是调试了好久。最后我找同学帮忙,他说我的程 序思路是对的,帮我纠正了一些细节上的错误。真的觉得自己真是太没脑子了,本来很快就能写出来的程序,每次都调试那么久。

      幸亏当初我爸让我报经济我没报,要不然钱都没了,都算不清是怎么没得。

  • 相关阅读:
    JDBC学习笔记一
    MySql学习笔记四
    MySql学习笔记三
    MySql学习笔记二
    将select 转为json
    这个网站病毒挺有意思,下载我网站的图片,我说怎么爬虫爬我几十个G的图片
    学习新知识的“填--捋--磨”策略
    谈下程序设计算法的准备心得与体会-nCov隔离也许帮你提升能力
    关于青少年,编程,教育的一些感悟(写在农历鼠年前)
    数据库敏捷版本控制之3个数据库策略
  • 原文地址:https://www.cnblogs.com/lrhan/p/5609668.html
Copyright © 2020-2023  润新知