Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 184, средняя оценка - 4.80
Lusia_911
1 / 1 / 0
Регистрация: 02.12.2010
Сообщений: 22
#1

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

02.12.2010, 02:33. Просмотров 25682. Ответов 16
Метки нет (Все метки)

Помогите составить программу, которая будет переводить секунды (произвольное целое число) в часы, минуты и секунды.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2010, 02:33     Как перевести секунды в часы, минуты и секунды
Посмотрите здесь:

Как правильно вывести часы минуты и секунды в функции C++
C++ Создать класс время с данными-членами часы, минуты, секунды
C++ Перевод секунд (произвольное целое число) в часы, минуты и секунды
Перевод секунд в часы,минуты и секунды C++
C++ Определить текущий день недели, год, месяц, число, а также текущее время-часы, минуты, секунды, сотые доли секунды.
Написать класс Время (часы, минуты, секунды) C++
Как сложить две временные отметки в виде дни часы: минуты: секунды C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
02.12.2010, 02:47     Как перевести секунды в часы, минуты и секунды #2
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";
Lusia_911
1 / 1 / 0
Регистрация: 02.12.2010
Сообщений: 22
02.12.2010, 02:53  [ТС]     Как перевести секунды в часы, минуты и секунды #3
а можешь пояснение дать?=))буду очень благодарна=)
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
02.12.2010, 05:02     Как перевести секунды в часы, минуты и секунды #4
надо делить
Lusia_911
1 / 1 / 0
Регистрация: 02.12.2010
Сообщений: 22
02.12.2010, 05:17  [ТС]     Как перевести секунды в часы, минуты и секунды #5
Цитата Сообщение от accept Посмотреть сообщение
надо делить
спасибо, кэп...
Darky
Быдлокодер
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
02.12.2010, 05:37     Как перевести секунды в часы, минуты и секунды #6
Цитата Сообщение от 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";
}
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
02.12.2010, 06:00     Как перевести секунды в часы, минуты и секунды #7
часы вычисляются через деление на 3600
h = s / 3600 - одна операция деления
h = s / 60 / 60 - две операции деления

а ещё секунды надо вычислить
sec = s % 60
vx5
187 / 171 / 4
Регистрация: 04.09.2010
Сообщений: 656
02.12.2010, 11:45     Как перевести секунды в часы, минуты и секунды #8
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 здесь остаток от деления
}
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
02.12.2010, 11:57     Как перевести секунды в часы, минуты и секунды #9
Правильно так:
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;
}
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
02.12.2010, 23:41     Как перевести секунды в часы, минуты и секунды #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
hour = s / 3600
min = (s - hour * 3600) / 60
sec = s - hour * 3600 - min * 60
Evgeny_Maximenk
Сообщений: n/a
28.07.2013, 18:04     Как перевести секунды в часы, минуты и секунды #11
Я сначала пробовал решить эту задачу через приведение типа переменной 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;}
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
29.07.2013, 02:13     Как перевести секунды в часы, минуты и секунды #12
Цитата Сообщение от Evgeny_Maximenk Посмотреть сообщение
Не могу понять, где происходит утечка времени.
в 24 строке теряются секунды
в 26 строке теряются минуты
в 28 строке теряются часы

порядок важен, способ вычисления важен, смотри сообщение
Бендерродригез
Сгибальщик
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
29.07.2013, 11:36     Как перевести секунды в часы, минуты и секунды #13
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;
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
29.07.2013, 12:07     Как перевести секунды в часы, минуты и секунды #14
Цитата Сообщение от accept Посмотреть сообщение
в 24 строке теряются секунды
в 26 строке теряются минуты
в 28 строке теряются часы
это отменить, не заметил, что у тебя там double
lalex321
0 / 0 / 0
Регистрация: 17.09.2016
Сообщений: 1
17.09.2016, 14:42     Как перевести секунды в часы, минуты и секунды #15
seconds нужно сделать тоже double
правда при seconds>1000000000 ошибка округления все равно появится
Rex030
0 / 0 / 0
Регистрация: 22.03.2017
Сообщений: 2
26.03.2017, 02:56     Как перевести секунды в часы, минуты и секунды #16
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;
 }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2017, 04:02     Как перевести секунды в часы, минуты и секунды
Еще ссылки по теме:

C++ Часы, минуты, секунды - операция сложения
C++ Функция, переводящая количество секунд в часы, минуты, секунды
Перевод в часы, минуты и секунды для структурных переменных C++
C++ Перевод из секунд в часы, минуты, секунды
C++ Перевод секунд в дни часы минуты секунды

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

Или воспользуйтесь поиском по форуму:
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3609 / 1884 / 500
Регистрация: 18.10.2014
Сообщений: 3,445
26.03.2017, 04:02     Как перевести секунды в часы, минуты и секунды #17
Цитата Сообщение от Rex030 Посмотреть сообщение
C++
1
2
3
4
m = trunc (arg / 60);
...
h = trunc (m / 60);
...
И в чем же, интересно, заключается роль функции trunc в данном контексте?
Yandex
Объявления
26.03.2017, 04:02     Как перевести секунды в часы, минуты и секунды
Ответ Создать тему
Опции темы

Текущее время: 11:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru