0 / 0 / 0
Регистрация: 13.09.2018
Сообщений: 53
1

Определить разницу между двумя временными значениями заданными в виде строк

13.12.2018, 19:37. Показов 2228. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны две строки, содержащие время в виде «hh.mm.ss». Определить сколько
секунд прошло между двумя этими данными.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2018, 19:37
Ответы с готовыми решениями:

Определить разницу между двумя временными точками
Разработать программу согласно варианту задания. Максимальная длина строк не менее 80 символов....

Вычислить разницу в днях между двумя заданными датами
Парни надо написать программу, которая будет вычислять разницу в днях между двумя заданными датами.

Как измерить разницу в секундах между двумя значениями времени?
привет. Мне нужно замерить время работы программы, используются объекты класса...

Определить угол часовой стрелки между двумя временными точками
Определить f - угол (в градусах) между положением часовой стрелки в начале суток и ее положения в h...

4
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
13.12.2018, 20:52 2
kornedar, здравствуйте! Вот решение (предполагается, что первое время идет вперед, догоняя второе):

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
#include <iostream> 
#include <string>
 
    using namespace std;
 
string secToTime(int n) {
    int h, m, s;
    string hour, min, sec;
    h = n / 3600;
    m = n / 60;
    s = n % 3600;
    if (h > 24) h = h % 24;
    if (m > 60) m = m % 60;
    if (s > 60) s = s % 60;
    if (h < 10) 
        hour = "0" + to_string(h);
            else hour = to_string(h);
    if (m < 10) 
        min = "0" + to_string(m);
            else min = to_string(m);
    if (s < 10) 
        sec = "0" + to_string(s);
            else sec = to_string(s);
    if (h == 24) hour = "00";
        if (m == 60) min = "00";
            if (s == 60) sec = "00";
    return hour + "." + min + "." + sec;
}
 
int timeToSec(const string &str) {
    int h, m, s;
    h = stoi(str.substr(0, 2));
    m = stoi(str.substr(3, 2));
    s = stoi(str.substr(6, 2));
    return h * 3600 + m * 60 + s;
}
 
int main() {
    int count;
    string tmval_1, tmval_2;
    cout << "Enter a time #1 (in hh.mm.ss format): ";
    cin >> tmval_1;
    cout << "Enter a time #2 (in hh.mm.ss format): ";
    cin >> tmval_2;
    count = 0;
    while (tmval_1 != tmval_2) {
        tmval_1 = secToTime(timeToSec(tmval_1) + 1);
        count++;
    }
    cout << "\nOutput of the program:\n";
    cout << "Seconds: " << count << "\n";
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 13.09.2018
Сообщений: 53
13.12.2018, 20:59  [ТС] 3
спасибо

Добавлено через 1 минуту
Можно вас попросить написать комментарии к решению?
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
13.12.2018, 21:08 4
Лучший ответ Сообщение было отмечено kornedar как решение

Решение

Цитата Сообщение от kornedar Посмотреть сообщение
Можно вас попросить написать комментарии к решению?
Да, конечно. Вот код с комментариями:

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
#include <iostream> 
#include <string>
 
    using namespace std;
 
string secToTime(int n) { //Функция перевода времени из секунд в строковый формат hh.mm.ss
    int h, m, s;
    string hour, min, sec;
    h = n / 3600;
    m = n / 60;
    s = n % 3600;
    if (h > 24) h = h % 24;
    if (m > 60) m = m % 60;
    if (s > 60) s = s % 60;
    if (h < 10) 
        hour = "0" + to_string(h);
            else hour = to_string(h);
    if (m < 10) 
        min = "0" + to_string(m);
            else min = to_string(m);
    if (s < 10) 
        sec = "0" + to_string(s);
            else sec = to_string(s);
    if (h == 24) hour = "00";
        if (m == 60) min = "00";
            if (s == 60) sec = "00";
    return hour + "." + min + "." + sec;
}
 
int timeToSec(const string &str) { //Функция перевода времени из строкового формата hh.mm.ss в секунды
    int h, m, s;
    h = stoi(str.substr(0, 2));
    m = stoi(str.substr(3, 2));
    s = stoi(str.substr(6, 2));
    return h * 3600 + m * 60 + s;
}
 
int main() {
    int count;
    string tmval_1, tmval_2;
    cout << "Enter a time #1 (in hh.mm.ss format): ";
    cin >> tmval_1; //Вводим первый временной интервал в формате hh.mm.ss
    cout << "Enter a time #2 (in hh.mm.ss format): ";
    cin >> tmval_2; //Вводим второй временной интервал в формате hh.mm.ss
    count = 0;
    while (tmval_1 != tmval_2) { //Пока временные интервалы в формате hh.mm.ss не совпадут
        tmval_1 = secToTime(timeToSec(tmval_1) + 1); //Увеличиваем первый временной интервал на 1 секунду (совершая соответствующие преобразования)
        count++; //Увеличиваем счетчик на 1 (подсчитываем количество набежавших секунд)
    }
    cout << "\nOutput of the program:\n";
    cout << "Seconds: " << count << "\n"; //Выводим искомое количество секунд
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 13.09.2018
Сообщений: 53
13.12.2018, 21:14  [ТС] 5
Огромное вам спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2018, 21:14
Помогаю со студенческими работами здесь

Найти сумму элементов массива, расположенных между двумя заданными значениями
Найти сумму элементов массива, расположенных между двумя заданными значениями. есть программа, но...

Как вычислить разницу в формате "HH ч mm мин" между двумя значениями времени?
Добрый день! Есть таблица, одним из полей которого есть время в формате yyyy-MM-dd HH:mm:ss Как...

Определить разницу между минимальным и максимальным вычисленными значениями
Помогите решить задачу. Вычислить значения z, соответствующие каждому значению x(xn&lt;x&lt;xk) шаг...

Установить разницу между временными промежутками в минутах и секундах
Задача:Составить программу, в которой вводятся значения двух временных промежутков в часах. Разницу...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru