Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/952: Рейтинг темы: голосов - 952, средняя оценка - 4.95
1 / 1 / 0
Регистрация: 02.12.2010
Сообщений: 22

Как перевести секунды в часы, минуты и секунды

02.12.2010, 02:33. Показов 183287. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите составить программу, которая будет переводить секунды (произвольное целое число) в часы, минуты и секунды.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.12.2010, 02:33
Ответы с готовыми решениями:

Перевести секунды в часы/минуты/секунды
помогите решить задачу Пользователь вводит количество секунд. Используя оператор % вывести сколько в этом числе часов, минут и секунд. ...

Как перевести часы в минуты и секунды?
Здравствуйте. Сейчас только осваиваю классы, поэтому не судите строго. Программа выдает результат: минут: 4232816 секунд: 65535. я не...

Определить текущий день недели, год, месяц, число, а также текущее время-часы, минуты, секунды, сотые доли секунды.
1. Составить программу на языке Си , используя функций прерывания 21h. Определить текущий день недели, год, месяц, число, а также текущее...

20
 Аватар для vx5
191 / 175 / 12
Регистрация: 04.09.2010
Сообщений: 656
02.12.2010, 02:47
C++
1
2
3
4
5
int s,m,h=0;
cin >> s;
m = s*60;
h = s*60*60;
cout << s << " секунд = " << m << " минут = " << h <<"часов \n";
1
1 / 1 / 0
Регистрация: 02.12.2010
Сообщений: 22
02.12.2010, 02:53  [ТС]
а можешь пояснение дать?=))буду очень благодарна=)
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
02.12.2010, 05:02
надо делить
0
1 / 1 / 0
Регистрация: 02.12.2010
Сообщений: 22
02.12.2010, 05:17  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
надо делить
спасибо, кэп...
1
Быдлокодер
 Аватар для Darky
512 / 298 / 85
Регистрация: 22.11.2009
Сообщений: 892
02.12.2010, 05:37
Цитата Сообщение от Lusia_911 Посмотреть сообщение
спасибо, кэп...
во-первых, это уже давно не остроумно,
во-вторых, это не так уж и очевидно.
vx5,
если следовать логике вашей программы, в одной секунде 3600 часов.
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
int main()
{
  double s,m,h=0;
    cin >> s;
  m = s/60;
  h = s/60/60;
    cout << s << " секунд = " << m << " минут = " << h <<"часов \n";
}
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
02.12.2010, 06:00
часы вычисляются через деление на 3600
h = s / 3600 - одна операция деления
h = s / 60 / 60 - две операции деления

а ещё секунды надо вычислить
sec = s % 60
1
 Аватар для vx5
191 / 175 / 12
Регистрация: 04.09.2010
Сообщений: 656
02.12.2010, 11:45
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
int main()
{
  int s,m,h=0; //задаем переменные и инициализируем им
  cin >> s; //считываем секуды с клавиатуры
  m = s/60; //пересчитываем секунды в минуты 
  h = s/60/60; //пересчитываем секунды в часы
  cout << s << " секунд = " <<  h << " час "  << m << " мин  " << s%60 << " сек \n"; //выводим результат, s%60 здесь остаток от деления
}
1
C/C++
93 / 93 / 18
Регистрация: 01.07.2010
Сообщений: 281
02.12.2010, 11:57
Правильно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int s;
    cout<<"Enter seconds: ";
    cin>>s;
    cout<<"Result: "<<s/60/60<<" hours, "<<s/60%60<<" minuts "
        <<s%60<<" seconds"<<endl;
    return 0;
}
4
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
02.12.2010, 23:41
Лучший ответ Сообщение было отмечено как решение

Решение

hour = s / 3600
min = (s - hour * 3600) / 60
sec = s - hour * 3600 - min * 60
6
Evgeny_Maximenk
28.07.2013, 18:04
Я сначала пробовал решить эту задачу через приведение типа переменной double в int для получения остатка.

Но это решение не позволяет получить точное значение минут и секунд. ( Например при переводе 31600000 секунд, разница с правильным ответом составляет 40 секунд).

Не могу понять, где происходит утечка времени. Кто знает?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
 
using namespace std;
 
long seconds;
 
double days, hours, minutes; // прототипы промежуточных значений
 
double  hours1, minutes1, seconds1; // прототипы ответов
 
 
const int HoursInDay = 24;
 
const int MinutesInHour = 60;
 
const int SecondsInMinute = 60;
 
int main ()
{
cout << "Enter number of seconds:  ";
cin >> seconds;
 
minutes = seconds / SecondsInMinute; // сначала проводим промежуточные вычисления
 
hours = minutes / MinutesInHour;
 
days = hours / HoursInDay;
 
hours1 = (days - int(days)) * HoursInDay; // затем, путем смены типа данных, вычисляем 
// остаток и умножаем его на соответствующую константу.
 
minutes1 = (hours1 - int (hours1))* MinutesInHour;
 
seconds1 = (minutes1 -  int (minutes1)) * SecondsInMinute;
 
 
cout << int (days)<< "Days, " ;
 
cout << int (hours1) << "Hours, ";
 
cout << int (minutes1) << "Minutes, ";
 
cout << int (seconds1) << "Seconds ";
 
system ("pause");
 
return 0;}
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
29.07.2013, 02:13
Цитата Сообщение от Evgeny_Maximenk Посмотреть сообщение
Не могу понять, где происходит утечка времени.
в 24 строке теряются секунды
в 26 строке теряются минуты
в 28 строке теряются часы

порядок важен, способ вычисления важен, смотри сообщение
0
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
29.07.2013, 11:36
C++
1
2
3
4
5
6
#include <ctime>
...
time_t t;
cin>>t;
tm *m = gmtime(&t);
cout << m->tm_hour << ' ' << m->tm_min << ' ' << m->tm_sec;
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
29.07.2013, 12:07
Цитата Сообщение от accept Посмотреть сообщение
в 24 строке теряются секунды
в 26 строке теряются минуты
в 28 строке теряются часы
это отменить, не заметил, что у тебя там double
0
0 / 0 / 0
Регистрация: 17.09.2016
Сообщений: 1
17.09.2016, 14:42
seconds нужно сделать тоже double
правда при seconds>1000000000 ошибка округления все равно появится
0
1 / 1 / 0
Регистрация: 22.03.2017
Сообщений: 6
26.03.2017, 02:56
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <iomanip>
#include <clocale>
#include <cmath>
 
using namespace std;
 
 struct Time                                                                          
  {
    int hours;
    int minutes;
    int seconds;    
  };
  
  long Total_Seconds (Time);
  Time Transformation (long);
  void ShowTime (Time);
 
int main()
{
     setlocale(LC_CTYPE,"rus");
     
     Time time1 = {0, 0, 0};
     Time time2 = {0, 0, 0};
     
     long t_sec1 = 0;
     long t_sec2 = 0; 
        
     
     cout << "Ввеите 1е время (в формате h:m:s) - ";  cin >> time1.hours >> time1.minutes >> time1.seconds;
     cout << "Введите 2е время (в формате h:m:s) - ";  cin >> time2.hours >> time2.minutes >> time2.seconds;
     cout << endl;
     
     cout << "1е время: ";
     ShowTime (time1);
     cout << endl;
     cout << "2е время: ";
     ShowTime (time2);
     cout << endl;
     
     t_sec1 = Total_Seconds(time1);
     t_sec2 = Total_Seconds(time2);
     
     t_sec1 += t_sec2;
     
     cout << "Суммаâðåìåíè2го времени = ";
     ShowTime(Transformation(t_sec1));
     
     
     getch ();
     return 0;  
}
//=====================================================================
 
long Total_Seconds (Time arg)
 {
    return arg.hours * 3600 + arg.minutes * 60 + arg.seconds;
 }
 
Time Transformation (long arg)
 {
    int h, m, s;
    Time time3 = {0, 0, 0};
    
     m = trunc (arg / 60);
     s = (arg % 60);
     h = trunc (m / 60);
     m = (m % 60);
     
     
     time3.seconds = s;
     time3.minutes = m;
     time3.hours   = h; 
     
     return time3;
 } 
 
void ShowTime (Time arg)
 {
    cout << arg.hours << ":" << arg.minutes << ":" << arg.seconds;
 }
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12922 / 6789 / 1818
Регистрация: 18.10.2014
Сообщений: 17,176
26.03.2017, 04:02
Цитата Сообщение от Rex030 Посмотреть сообщение
C++
1
2
3
4
m = trunc (arg / 60);
...
h = trunc (m / 60);
...
И в чем же, интересно, заключается роль функции trunc в данном контексте?
0
0 / 0 / 0
Регистрация: 06.04.2016
Сообщений: 22
22.10.2018, 17:24
Ну понятно что это задание из книжки Прата (3 глава 4 задание) я решил его немного в более грубом виде но результат вычисления из числа 31600000 получился более точным

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "pch.h"
#include <iostream>
 
int main()
{
    using namespace std;
    cout << "Enter the number of second: ";
    long long in_value;
    const int hoursINday = 24;
    const int minutesINhour = 60;
    const int secondsINminutes = 60;
    cin >> in_value;
 
    int res_days = in_value / 86400;
    int res_hours = (in_value % 86400) / 3600;
    int res_minutes = ((in_value % 86480) % 3600) / 60;
    int res_seconds = ((in_value % 86480) % 3600) % 60;
    cout << "Result " << res_days << " : " << res_hours << " : " << res_minutes << " : " << res_seconds << endl;
 
    return 0;
}
но пропадает по прежнему немного секунд .

Добавлено через 2 минуты
Цитата Сообщение от use_man Посмотреть сообщение
const int hoursINday = 24;
* * const int minutesINhour = 60;
* * const int secondsINminutes = 60;
Это не убрал после попытки которая указывалась раньше , эти константы не играют никакой роли .
0
0 / 0 / 0
Регистрация: 27.06.2020
Сообщений: 1
27.06.2020, 20:31
простой способ перевода используя функцию modf, которая разделяет целую часть от дробной.

#include <iostream>
#include <math.h>

using namespace std;

int main() {
double s, h, m1, i;
int m;
setlocale(LC_ALL, "Russian");

cout << "Введите количество секунд с начала суток: ";
cin >> s;

h = s / 3600;
m1 = modf(h, &i);
m = m1 * 60 ;

cout << "С начала суток прошло " << i << " часов и " << m << " минут";
}
0
0 / 0 / 0
Регистрация: 27.09.2020
Сообщений: 1
27.09.2020, 19:32
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
system ("chcp 1251");
cout<<"Введите количество секунд: ";
int s;//=31600000
cin>>s;
double d,h,m,sec;
d=double(s)/86400;//365.741
h=(d-int(d))*24;//17.7778
m=(h-int(h))*60;//46.6667
sec=(m-int(m))*60;//40

cout <<s<<" секунд = "<<int(d)<<" дней, "<<int(h)<<" часов, "<<int(m)<<" минут, "<<int(sec)<<" секунд";
cin.get();
cin.get();
return 0;
}
/*
1 день= 24 часа= 1 440 минут = 86 400 секунд
Итог:31600000 секунд = 365 дней, 17 часов, 46 минут, 40 секунд
*/

Добавлено через 15 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
    system ("chcp 1251");
    cout<<"Введите количество секунд: ";
    int s;  //=31600000
    cin>>s;
    double d,h,m,sec;
    d=double(s)/86400;  //365.741
    h=(d-int(d))*24;  //17.7778
    m=(h-int(h))*60;  //46.6667
    sec=(m-int(m))*60;  //40
 
    cout <<s<<" секунд = "<<int(d)<<" дней, "<<int(h)<<" часов, "<<int(m)<<" минут, "<<int(sec)<<" секунд";
    cin.get();
    cin.get();
    return 0;
}
/*
1 день= 24 часа= 1 440 минут = 86 400 секунд
Итог: 31600000 секунд = 365 дней, 17 часов, 46 минут, 40 секунд
*/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2020, 19:32
Помогаю со студенческими работами здесь

Перевести введенное значение в дни, часы, минуты и секунды
помогите пожалуйста, проблема с минутами когда ввожу большое число (например 360 000) Спасибо // Ввести время в секундах....

Перевести временной интервал, заданный в минутах, в часы, минуты и секунды
Задание: Написать программу пересчета величины временного интервала, заданного в минутах, в величину, выраженную в часах, минутах и...

Как правильно вывести часы минуты и секунды в функции
#include &lt;iostream&gt; using namespace std; long hms_to_secs(long int,long int,long int); int secs_to_time(int); int main() { ...

Описать как структуру переменную время (с полями часы, минуты, секунды)
Прошу вашей помощи Описать как структуру переменную время (с полями часы, минуты, секунды). Составить и протестировать функцию: ...

Как сложить две временные отметки в виде дни часы: минуты: секунды
Здравствуйте! Подскажите пожалуйста, как сложить две временные отметки в виде дни часы: минуты: секунды? Спасибо!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru