Раздел: Задачи / Простейшие /
Как преобразовать секунды в часы-минуты-секунды
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее... |
Условие задачи 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 (в моём случае), что является не очень “случайным” числом. Поэтому пришлось немного поизвращаться, чтобы число было действительно более-менее случайным.
ВНИМАНИЕ!
Если вам что-то осталось непонятно, то советую почитать книги
“Основы программирования” и
“Основы С++”.
Вступить в группу "Основы программирования"
Подписаться на канал в РУТУБ Подписаться на Дзен-канал Подписаться на рассылки по программированию |
Как стать программистом 2.0
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее... |
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее... |