1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include <iostream> template <class ParticularFruit> struct FruitBase { FruitBase(int num) : m_inventory(num) {} float netProfit() const { auto && particular_fruit = static_cast<const ParticularFruit &>(*this); return particular_fruit.totalSellPrice() - particular_fruit.totalCostPrice(); } protected: int m_inventory; }; struct Apple : FruitBase<Apple> { Apple(int num, float unitCostPrice, float unitSellPrice) : FruitBase(num), m_unitCostPrice(unitCostPrice), m_unitSellPrice(unitSellPrice) {} float totalCostPrice() const { return m_inventory * m_unitCostPrice; } float totalSellPrice() const { return m_inventory * m_unitSellPrice; } private: float m_unitCostPrice; float m_unitSellPrice; }; struct Orange : FruitBase<Orange> { Orange(int num, float unitCostPrice, float unitSellPrice) : FruitBase(num), m_unitCostPrice(unitCostPrice), m_unitSellPrice(unitSellPrice) {} float totalCostPrice() const { return m_inventory * m_unitCostPrice; } float totalSellPrice() const { return m_inventory * m_unitSellPrice; } private: float m_unitCostPrice; float m_unitSellPrice; }; template <typename Fruit> void print_net_profit(const Fruit & fruit) { std::cout << "Net profit at current prices = $ " << fruit.netProfit() << std::endl; } int main() { Apple apple(100, 4.00, 4.25); Orange orange(50, 7.00, 7.25); print_net_profit(apple); print_net_profit(orange); } |
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPGNsYXNzIFBhcnRpY3VsYXJGcnVpdD4Kc3RydWN0IEZydWl0QmFzZQp7CiAgICBGcnVpdEJhc2UoaW50IG51bSkgOiBtX2ludmVudG9yeShudW0pIHt9CgoJZmxvYXQgbmV0UHJvZml0KCkgY29uc3QKCXsKCQlhdXRvICYmIHBhcnRpY3VsYXJfZnJ1aXQgPSBzdGF0aWNfY2FzdDxjb25zdCBQYXJ0aWN1bGFyRnJ1aXQgJj4oKnRoaXMpOwoJCXJldHVybiBwYXJ0aWN1bGFyX2ZydWl0LnRvdGFsU2VsbFByaWNlKCkgLSBwYXJ0aWN1bGFyX2ZydWl0LnRvdGFsQ29zdFByaWNlKCk7Cgl9Cgpwcm90ZWN0ZWQ6CglpbnQgbV9pbnZlbnRvcnk7Cn07CgpzdHJ1Y3QgQXBwbGUgOiBGcnVpdEJhc2U8QXBwbGU+CnsKCUFwcGxlKGludCBudW0sIGZsb2F0IHVuaXRDb3N0UHJpY2UsIGZsb2F0IHVuaXRTZWxsUHJpY2UpIDogCgkJRnJ1aXRCYXNlKG51bSksCgkJbV91bml0Q29zdFByaWNlKHVuaXRDb3N0UHJpY2UpLAoJCW1fdW5pdFNlbGxQcmljZSh1bml0U2VsbFByaWNlKSB7fQoKCWZsb2F0IHRvdGFsQ29zdFByaWNlKCkgY29uc3QgeyByZXR1cm4gbV9pbnZlbnRvcnkgKiBtX3VuaXRDb3N0UHJpY2U7IH0KCWZsb2F0IHRvdGFsU2VsbFByaWNlKCkgY29uc3QgeyByZXR1cm4gbV9pbnZlbnRvcnkgKiBtX3VuaXRTZWxsUHJpY2U7IH0KCnByaXZhdGU6CglmbG9hdCBtX3VuaXRDb3N0UHJpY2U7CglmbG9hdCBtX3VuaXRTZWxsUHJpY2U7Cn07CgpzdHJ1Y3QgT3JhbmdlIDogRnJ1aXRCYXNlPE9yYW5nZT4KewoJT3JhbmdlKGludCBudW0sIGZsb2F0IHVuaXRDb3N0UHJpY2UsIGZsb2F0IHVuaXRTZWxsUHJpY2UpIDogCgkJRnJ1aXRCYXNlKG51bSksCgkJbV91bml0Q29zdFByaWNlKHVuaXRDb3N0UHJpY2UpLAoJCW1fdW5pdFNlbGxQcmljZSh1bml0U2VsbFByaWNlKSB7fQoKCWZsb2F0IHRvdGFsQ29zdFByaWNlKCkgY29uc3QgeyByZXR1cm4gbV9pbnZlbnRvcnkgKiBtX3VuaXRDb3N0UHJpY2U7IH0KCWZsb2F0IHRvdGFsU2VsbFByaWNlKCkgY29uc3QgeyByZXR1cm4gbV9pbnZlbnRvcnkgKiBtX3VuaXRTZWxsUHJpY2U7IH0KCnByaXZhdGU6CglmbG9hdCBtX3VuaXRDb3N0UHJpY2U7CglmbG9hdCBtX3VuaXRTZWxsUHJpY2U7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgRnJ1aXQ+CnZvaWQgcHJpbnRfbmV0X3Byb2ZpdChjb25zdCBGcnVpdCAmIGZydWl0KQp7CglzdGQ6OmNvdXQgPDwgIk5ldCBwcm9maXQgYXQgY3VycmVudCBwcmljZXMgPSAkICIgPDwgZnJ1aXQubmV0UHJvZml0KCkgPDwgc3RkOjplbmRsOwp9CgppbnQgbWFpbigpCnsKCUFwcGxlIGFwcGxlKDEwMCwgNC4wMCwgNC4yNSk7CglPcmFuZ2Ugb3JhbmdlKDUwLCA3LjAwLCA3LjI1KTsKIAoJcHJpbnRfbmV0X3Byb2ZpdChhcHBsZSk7CglwcmludF9uZXRfcHJvZml0KG9yYW5nZSk7Cn0K
-
upload with new input
-
result: Success time: 0s memory: 2884 kB returned value: 0
Net profit at current prices = $ 25 Net profit at current prices = $ 12.5


