Как удалить пустую папку в Паскале
Обязательно ли в JavaScript использовать точку с запятой для обозначения конца инструкции
Примеры работы фрилансера
Специальные символы в языках программирования С/С++ и некоторых других
Как в Паскале вставить данные в строку или в динамический массив

Как стать успешным фрилансером
Раздел: Задачи / Простейшие /
Как преобразовать секунды в часы-минуты-секунды
![]() |
|
Условие задачи 6.1.2.32
Задача 6.1.2.32
Дано натуральное число Т, которое представляет длительность прошедшего времени в секундах. Вывести данное значение длительности в часах, минутах и секундах в следующей форме: ЧЧ:ММ:СС, где ЧЧ - это часы, ММ - минуты, СС - секунды.
Довольно любопытная задача, которая на первый взгляд кажется простой. Однако новичкам с ней придётся помучиться. Кстати, прежде чем посмотреть моё решение, предлагаю сначала именно помучиться и попробовать решить задачу самостоятельно, потому как только так можно стать программистом.
Итак, давайте сначала поразмышляем над алгоритмом решения. Сразу уточню, что по условию задачи надо преобразовать секунды в формат ЧЧ:ММ:СС, то есть о количестве дней, месяцев, лет и т.п. речь не идёт. Отсюда принимаем, что количество секунд в нашем случае не может быть больше, чем количество секунд в сутках.
А теперь действия, которые надо выполнить для решения:
- Определить общее число минут (выполнить целое деление числа Т на 60).
- Вычислить количество секунд (вычесть из числа Т общее число минут, умноженное на 60).
- Определить число часов (выполнить целое деление количества минут на 60).
- Вычислить число минут.
Возможно, что-то осталось непонятным, но это что-то станет понятным при изучении примеров программ на Паскале и С++.
program mytask; //**************************************************************** // КОНСТАНТЫ //**************************************************************** const MAX_TIME = 24 * 60 * 60; //Число секунд в сутках //**************************************************************** // ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ //**************************************************************** var ElapsedTime : WORD; H, M, S : DWORD; //**************************************************************** // ОСНОВНАЯ ПРОГРАММА //**************************************************************** begin Randomize; ElapsedTime := Random(MAX_TIME); WriteLn('Elapsed time in seconds : ', ElapsedTime); M := ElapsedTime div 60; //Общее число минут S := ElapsedTime - (M * 60); //Число секунд H := M div 60; //Число часов M := M - (H * 60); //Число минут WriteLn('Elapsed time as HH:MM:SS : ', H, ':', M, ':', S); WriteLn('The end. Press ENTER...'); ReadLn; end.
#include <cstdlib> #include <iostream> #include <ctime> //!!! Подключить этот модуль, если ругается на srand //******************************************************************* // КОНСТАНТЫ //******************************************************************* const long MAX_TIME = 24 * 60; //Число минут в сутках using namespace std; long ElapsedTime; long H, M, S; //******************************************************************* // ОСНОВНАЯ ПРОГРАММА //******************************************************************* int main(int argc, char *argv[]) { srand(time(0)); //Запустить генератор случайных чисел ElapsedTime = (rand() % MAX_TIME) * (rand() % 60); cout << "Elapsed time in seconds : " << ElapsedTime << endl; M = ElapsedTime / 60; //Общее число минут S = ElapsedTime - (M * 60); //Число секунд H = M / 60; //Число часов M = M - (H * 60); //Число минут cout << "Elapsed time as HH:MM:SS : " << H << ":" << M << ":" << S << endl; system("PAUSE"); return EXIT_SUCCESS; }

На рисунке также показан калькулятор, с помощью которого мы можем убедиться, что программа работает правильно.
ПРИМЕЧАНИЕ
Поскольку функция rand()
в С++ обычно возвращает случайное
число в заданном диапазоне, но не более 32767, то попытка указать,
например, rand() % 80000
, приведёт к тому, что функция будет всегда возвращать число, близкое к 20000 (в моём случае), что является не очень “случайным” числом. Поэтому пришлось немного поизвращаться, чтобы число было действительно более-менее случайным.
ВНИМАНИЕ!
Если вам что-то осталось непонятно, то советую почитать книги
“Основы программирования” и
“Основы С++”.
Подписаться на канал в YouTube
Вступить в группу "Основы программирования" Подписаться на рассылки по программированию |
![]() |
Основы C++
C++ - это один из самых популярных языков программирования. Не важно, на каком языке программируете лично вы. Но, если вы хотя бы в общих чертах не знаете С++, то это большой пробел в вашем образовании, который надо восполнить как можно быстрее... Подробнее... |