Dirham_marocain
, Dollar
, and Bitcoin
as subclass of Crypto_currency
.
Dirham_marocain
, Dollar
, and Bitcoin
as subclass of Crypto_currency
.
Java solution Currency.Java.zip
![]()
// '.h' file: class Currency; class Obsolete_currency { public: static const Currency& Default_substitute; const Currency& substitute() const; bool still_active_() const; virtual std::tm substitution_date() const = 0; }; class Currency { public: const std::string _common_symbol; // $ <- exemple du dollar américain const int _iso_code; // 840 <- exemple du dollar américain const std::string _iso_symbol; // USD <- exemple du dollar américain protected: Currency(std::string, int, std::string); public: double rate(const Currency& currency) const; virtual double to_dollar_rate() const = 0; double convert_to_dollar(const double amount) const; virtual double to_euro_rate() const = 0; double convert_to_euro(const double amount) const; }; class Euro : public Currency { public: Euro(); double to_dollar_rate() const; double to_euro_rate() const; }; class Lats : public Currency, public Obsolete_currency { /** Monnaie de la Lettonie remplacée par l'Euro le 1er janvier 2014 **/ private: static const std::tm _Substitution_date; public: Lats(); double to_dollar_rate() const; double to_euro_rate() const; std::tm substitution_date() const; }; // '.cpp' file: const Currency& Obsolete_currency::Default_substitute = Euro(); const Currency& Obsolete_currency::substitute() const { return Default_substitute; } bool Obsolete_currency::still_active_() const { return false; } Currency::Currency(std::string common_symbol, int iso_code, std::string iso_symbol) : _common_symbol(common_symbol), _iso_code(iso_code), _iso_symbol(iso_symbol) {} double Currency::rate(const Currency& currency) const { return 1. / currency.to_euro_rate(); } double Currency::convert_to_dollar(const double amount) const { return amount * to_dollar_rate(); } double Currency::convert_to_euro(const double amount) const { return amount * to_euro_rate(); } Euro::Euro() : Currency("€", 978, "EUR") {} double Euro::to_dollar_rate() const { return 1.1; // Taux pris le 17 sept. 2019 } double Euro::to_euro_rate() const { return 1.; } const std::tm Lats::_Substitution_date = tm{.tm_mday = 1, .tm_mon = 0, .tm_year = 114}; Lats::Lats() : Currency("Ls", 428, "LVL") {} double Lats::to_dollar_rate() const { const Currency& substitute = this->substitute(); return rate(substitute) * substitute.to_dollar_rate(); } double Lats::to_euro_rate() const { return 1. / 0.702804; // Jan. 1, 2014 exchange rate } std::tm Lats::substitution_date() const { return _Substitution_date; } int main() { Lats lats; std::cout << lats.convert_to_euro(100) << '\n'; std::cout << lats.convert_to_dollar(100) << '\n'; }