Преобразуйте секунды в Дни, Минуты и Секунды

Эй все. У меня есть продолжение изучить C++, и я был установлен 'проблема' преобразования секунд к формату как Дни, Минуты и Секунды.

Например: 31600000 = 365 дней, 46 минут, 40 секунд.

using namespace std;
const int hours_in_day = 24;
const int mins_in_hour = 60;
const int secs_to_min = 60;

long input_seconds;
cin >> input_seconds;

long seconds = input_seconds % secs_to_min;
long minutes = input_seconds / secs_to_min % mins_in_hour;
long days = input_seconds / secs_to_min / mins_in_hour / hours_in_day;

cout << input_seconds << " seconds = "
     << days << " days, "
     << minutes << " minutes, "
     << seconds << " seconds ";

return 0;

Это работает и придумывает корректный ответ, но после завершения его я смотрел на то, как другие люди занялись им, и их отличался. Я задаюсь вопросом, Пропускаю ли я что-то.

Спасибо, Dan.

9
задан Dan 10 March 2010 в 18:40
поделиться

2 ответа

Одна из особенностей программирования заключается в том, что никогда не бывает единственного способа сделать что-либо. На самом деле, если бы я задумался, я мог бы придумать дюжину совершенно разных способов добиться этого. Вы ничего не упускаете, если ваш код соответствует требованиям.

Для вашего развлечения, вот способ отформатировать часы: минуты: секунды под Windows ( elapsed является двойным и представляет количество секунд, прошедших с ... чего-то)

sprintf_s<bufSize>(buf, "%01.0f:%02.0f:%02.2f", floor(elapsed/3600.0), floor(fmod(elapsed,3600.0)/60.0), fmod(elapsed,60.0));
6
ответ дан 4 December 2019 в 10:03
поделиться

Например: 31600000 = 365 дней, 46 минут 40 секунд.

Правда?

$ bc
365*24*60*60 + 46*60 + 40
31538800

365*24*60*60 + 1066*60 + 40
31600000

Вы имели в виду «преобразовать ввод в дни, часы, минуты и секунды, а затем отбросить часы» или «преобразовать ввод в дни, общее количество минут в течение дня (т.е. может быть больше 60 ) и секунды »?

Во втором случае, я думаю, вам следует заменить инструкцию для минут на

long minutes = input_seconds / secs_to_min % (mins_in_hour * hours_in_day);
1
ответ дан 4 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: