Согласие на обработку персональных данных.

08.04.2019
Новый выпуск журнала Автоматизация и программирование.

27.04.2019
Новые видео и статья Процедура Dispose.

23.04.2019
Новые видео и статья Как передать массив в функцию.

19.04.2019
Новая задача Как преобразовать секунды в часы-минуты-секунды.

07.03.2019
Новый выпуск журнала Автоматизация и программирование.



Раздел: Задачи / Простейшие /

Как преобразовать секунды в часы-минуты-секунды

Условие задачи 6.1.2.32

Задача 6.1.2.32
Дано натуральное число Т, которое представляет длительность прошедшего времени в секундах. Вывести данное значение длительности в часах, минутах и секундах в следующей форме: ЧЧ:ММ:СС, где ЧЧ - это часы, ММ - минуты, СС - секунды.

Довольно любопытная задача, которая на первый взгляд кажется простой. Однако новичкам с ней придётся помучиться. Кстати, прежде чем посмотреть моё решение, предлагаю сначала именно помучиться и попробовать решить задачу самостоятельно, потому как только так можно стать программистом.

Итак, давайте сначала поразмышляем над алгоритмом решения. Сразу уточню, что по условию задачи надо преобразовать секунды в формат ЧЧ:ММ:СС, то есть о количестве дней, месяцев, лет и т.п. речь не идёт. Отсюда принимаем, что количество секунд в нашем случае не может быть больше, чем количество секунд в сутках.

А теперь действия, которые надо выполнить для решения:

  1. Определить общее число минут (выполнить целое деление числа Т на 60).
  2. Вычислить количество секунд (вычесть из числа Т общее число минут, умноженное на 60).
  3. Определить число часов (выполнить целое деление количества минут на 60).
  4. Вычислить число минут.

Возможно, что-то осталось непонятным, но это что-то станет понятным при изучении примеров программ на Паскале и С++.

Решение задачи 6.1.2.32 на Паскале
 
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.
Решение задачи 6.1.2.32 на С++
#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 (в моём случае), что является не очень “случайным” числом. Поэтому пришлось немного поизвращаться, чтобы число было действительно более-менее случайным.

ВНИМАНИЕ!
Если вам что-то осталось непонятно, то советую почитать книги “Основы программирования” и “Основы С++”.


Основы C++ Основы C++

C++ - это один из самых популярных языков программирования. Не важно, на каком языке программируете лично вы. Но, если вы хотя бы в общих чертах не знаете С++, то это большой пробел в вашем образовании, который надо восполнить как можно быстрее... Подробнее...
Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика