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

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

Основы программирования 2.0 Основы программирования
Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее...

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

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


Как стать программистом 2.0 Как стать программистом 2.0

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

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

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