From 73ab28e8df0326c4e9a09805eb7bc255c88899b6 Mon Sep 17 00:00:00 2001 From: "exercism-solutions-syncer[bot]" <211797793+exercism-solutions-syncer[bot]@users.noreply.github.com> Date: Sat, 20 Jun 2026 17:30:15 +0000 Subject: [PATCH] [Sync Iteration] cpp/space-age/1 --- solutions/cpp/space-age/1/space_age.cpp | 47 +++++++++++++++++++++++++ solutions/cpp/space-age/1/space_age.h | 39 ++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 solutions/cpp/space-age/1/space_age.cpp create mode 100644 solutions/cpp/space-age/1/space_age.h diff --git a/solutions/cpp/space-age/1/space_age.cpp b/solutions/cpp/space-age/1/space_age.cpp new file mode 100644 index 0000000..222e81e --- /dev/null +++ b/solutions/cpp/space-age/1/space_age.cpp @@ -0,0 +1,47 @@ +#include "space_age.h" + +namespace space_age { + +// 1. Constructor con lista de inicialización +space_age::space_age(double seconds) : m_seconds(seconds) {} + +// 2. Método para recuperar los segundos +double space_age::seconds() const { + return m_seconds; +} + +// 3. Cálculo base para la Tierra +double space_age::on_earth() const { + return m_seconds / EARTH_YEAR_IN_SECONDS; +} + +// 4. Conversiones planetarias directas +double space_age::on_mercury() const { + return on_earth() / MERCURY_ORBITAL_FACTOR; +} + +double space_age::on_venus() const { + return on_earth() / VENUS_ORBITAL_FACTOR; +} + +double space_age::on_mars() const { + return on_earth() / MARS_ORBITAL_FACTOR; +} + +double space_age::on_jupiter() const { + return on_earth() / JUPITER_ORBITAL_FACTOR; +} + +double space_age::on_saturn() const { + return on_earth() / SATURN_ORBITAL_FACTOR; +} + +double space_age::on_uranus() const { + return on_earth() / URANO_ORBITAL_FACTOR; +} + +double space_age::on_neptune() const { + return on_earth() / NEPTUNE_ORBITAL_FACTOR; +} + +} \ No newline at end of file diff --git a/solutions/cpp/space-age/1/space_age.h b/solutions/cpp/space-age/1/space_age.h new file mode 100644 index 0000000..7613ee8 --- /dev/null +++ b/solutions/cpp/space-age/1/space_age.h @@ -0,0 +1,39 @@ +#pragma once + +namespace space_age { + +class space_age { +private: + double m_seconds; + + // Constantes de conversión grabadas directamente en el binario + static constexpr double EARTH_YEAR_IN_SECONDS = 31557600.0; + + // Factores orbitales relativos de los planetas + static constexpr double MERCURY_ORBITAL_FACTOR = 0.2408467; + static constexpr double VENUS_ORBITAL_FACTOR = 0.61519726; + static constexpr double MARS_ORBITAL_FACTOR = 1.8808158; + static constexpr double JUPITER_ORBITAL_FACTOR = 11.862615; + static constexpr double SATURN_ORBITAL_FACTOR = 29.447498; + static constexpr double URANO_ORBITAL_FACTOR = 84.016846; + static constexpr double NEPTUNE_ORBITAL_FACTOR = 164.79132; + +public: + // Constructor: Inicializa los segundos + explicit space_age(double seconds); + + // Método de acceso para obtener los segundos + double seconds() const; + + // Métodos de conversión planetaria + double on_earth() const; + double on_mercury() const; + double on_venus() const; + double on_mars() const; + double on_jupiter() const; + double on_saturn() const; + double on_uranus() const; + double on_neptune() const; +}; + +} // namespace space_age \ No newline at end of file