#include <stdio.h>
/*
Use integer division and modulo:
1 minute = 60 seconds
1 hour = 60 minutes
1 day = 24 hours
1 week = 7 days
*/
/*
Convert a total number of seconds into weeks, days, hours,
minutes, and seconds. The function receives the total seconds
and outputs each component through pointer parameters.
*/
void convertSeconds(long long totalSeconds,
long long *weeks,
long long *days,
long long *hours,
long long *minutes,
long long *seconds)
{
const long long SECS_PER_MIN = 60;
const long long SECS_PER_HOUR = 60 * SECS_PER_MIN;
const long long SECS_PER_DAY = 24 * SECS_PER_HOUR;
const long long SECS_PER_WEEK = 7 * SECS_PER_DAY;
// Compute each unit using integer division and modulo
*weeks = totalSeconds / SECS_PER_WEEK;
totalSeconds %= SECS_PER_WEEK;
*days = totalSeconds / SECS_PER_DAY;
totalSeconds %= SECS_PER_DAY;
*hours = totalSeconds / SECS_PER_HOUR;
totalSeconds %= SECS_PER_HOUR;
*minutes = totalSeconds / SECS_PER_MIN;
*seconds = totalSeconds % SECS_PER_MIN;
}
int main() {
long long seconds = 1000000;
long long w, d, h, m, s;
convertSeconds(seconds, &w, &d, &h, &m, &s);
printf("%lld weeks, %lld days, %lld hours, %lld minutes, %lld seconds\n",
w, d, h, m, s);
}
/*
run:
1 weeks, 4 days, 13 hours, 46 minutes, 40 seconds
*/