diff options
Diffstat (limited to 'c/space-age/src/space_age.c')
-rw-r--r-- | c/space-age/src/space_age.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/c/space-age/src/space_age.c b/c/space-age/src/space_age.c new file mode 100644 index 0000000..36502de --- /dev/null +++ b/c/space-age/src/space_age.c @@ -0,0 +1,35 @@ +#include "space_age.h" + +#define EARTH_YEAR_IN_SECONDS 31557600 + +#define MERCURY_YEAR_IN_EARTH_YEARS 0.2408467f +#define VENUS_YEAR_IN_EARTH_YEARS 0.61519726f +#define EARTH_YEAR_IN_EARTH_YEARS 1.0f +#define MARS_YEAR_IN_EARTH_YEARS 1.8808158f +#define JUPITER_YEAR_IN_EARTH_YEARS 11.862615f +#define SATURN_YEAR_IN_EARTH_YEARS 29.447498f +#define URANUS_YEAR_IN_EARTH_YEARS 84.016846f +#define NEPTUNE_YEAR_IN_EARTH_YEARS 164.79132f + +float age(planet_t planet, int64_t seconds) { + switch (planet) { + case MERCURY: + return seconds / (MERCURY_YEAR_IN_EARTH_YEARS * EARTH_YEAR_IN_SECONDS); + case VENUS: + return seconds / (VENUS_YEAR_IN_EARTH_YEARS * EARTH_YEAR_IN_SECONDS); + case EARTH: + return seconds / (EARTH_YEAR_IN_EARTH_YEARS * EARTH_YEAR_IN_SECONDS); + case MARS: + return seconds / (MARS_YEAR_IN_EARTH_YEARS * EARTH_YEAR_IN_SECONDS); + case JUPITER: + return seconds / (JUPITER_YEAR_IN_EARTH_YEARS * EARTH_YEAR_IN_SECONDS); + case SATURN: + return seconds / (SATURN_YEAR_IN_EARTH_YEARS * EARTH_YEAR_IN_SECONDS); + case URANUS: + return seconds / (URANUS_YEAR_IN_EARTH_YEARS * EARTH_YEAR_IN_SECONDS); + case NEPTUNE: + return seconds / (NEPTUNE_YEAR_IN_EARTH_YEARS * EARTH_YEAR_IN_SECONDS); + default: + return -1; + } +} |