Раздел: Задачи / Простейшие /
Как преобразовать секунды в часы-минуты-секунды
 
 | 
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее...  | 
Условие задачи 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), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...  |