Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions solutions/cpp/space-age/1/space_age.cpp
Original file line number Diff line number Diff line change
@@ -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;
}

}
39 changes: 39 additions & 0 deletions solutions/cpp/space-age/1/space_age.h
Original file line number Diff line number Diff line change
@@ -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