#include #include using namespace std; class Reward { public: virtual ~Reward() = default; virtual float worth() const = 0; }; class Coinpile : public Reward { public: Coinpile(int amount) : amount {amount} {} float worth() const override { return amount * 13; } private: int amount; }; class Diamond : public Reward { public: Diamond(float radius) : radius {radius} {} float worth() const override { return 4.0 / 3.0 * 3.14 * radius * radius * radius; } private: float radius; }; float total_worth(Reward const& r1, Reward const& r2, Reward const& r3) { float sum {}; sum += r1.worth(); sum += r2.worth(); sum += r3.worth(); return sum; } int main() { Diamond reward1 {3.8f}; Coinpile reward2 {5}; Diamond reward3 {0.1f}; float total { total_worth(reward1, reward2, reward3) }; std::cout << "Total worth from your three rewards: " << total << std::endl; return 0; }