• C++ //练习 15.7 定义一个类使其实现一种数量受限的折扣策略,具体策略是:当购买书籍的数量不超过一个给定的限量时享受折扣,如果购买量一旦超过了限量,则超出的部分将以原价销售。


    C++ Primer(第5版) 练习 15.7

    练习 15.7 定义一个类使其实现一种数量受限的折扣策略,具体策略是:当购买书籍的数量不超过一个给定的限量时享受折扣,如果购买量一旦超过了限量,则超出的部分将以原价销售。

    环境:Linux Ubuntu(云服务器)
    工具:vim

     

    代码块
    /*************************************************************************
    	> File Name: ex15.7.cpp
    	> Author: 
    	> Mail: 
    	> Created Time: Fri 12 Jul 2024 09:13:44 AM CST
     ************************************************************************/
    
    #include
    using namespace std;
    
    class Quote{
        public:
        Quote() = default;
        Quote(const std::string &book, double sales_price): bookNo(book), price(sales_price) {}
        std::string isbn() const { return bookNo; }
        
        virtual double net_price(std::size_t n) const { return n * price; }
        virtual ~Quote() = default;
    
        private:
        std::string bookNo;
        
        protected:
        double price = 0.0;
    };
    
    class Bulk_quote: public Quote{
        public:
        Bulk_quote() = default;
        Bulk_quote(const std::string& book, double p, std::size_t qty, double disc): Quote(book, p), min_qty(qty), discount(disc) {}
        double net_price(std::size_t) const override;
    
        private:
        std::size_t min_qty = 0;
        double discount = 0.0;
    };
    
    double Bulk_quote::net_price(size_t cnt) const{
        if (cnt <= min_qty){
            return cnt * (1 - discount) * price;
        }
        else{
            return min_qty * (1 - discount) * price + (cnt - min_qty) * price;
        }
    }
    
    double print_total(ostream &os, const Quote &item, size_t n){
        double ret = item.net_price(n);
        os<<"ISBN: "<<item.isbn()<<" # sold: "<<n<<" total due: "<<ret<<endl;
        return ret;
    }
    
    int main(){
        Bulk_quote bulk("1-201-Y-12333", 10, 10, 0.5);
        print_total(cout, bulk, 20);
    
        return 0;
    }
    
    运行结果显示如下

    在这里插入图片描述

  • 相关阅读:
    Intel汇编-变量初始赋值
    Django(21):使用Celery任务框架
    记一次 .NET 某工控视觉系统 卡死分析
    深入了解Redis的TYPE命令
    mysql workbench使用schema视图导出表和列结构到excel
    多微信如何自动发朋友圈?
    『德不孤』Pytest框架 — 14、Pytest中的conftest.py文件
    QEMU源码全解析 —— virtio(27)
    【云原生实战】KubeSphere实战——多租户系统实战
    喜讯|宏时数据获得CMMI3级认证!欢迎了解自研统一运维监控平台!
  • 原文地址:https://blog.csdn.net/navicheung/article/details/140373166