С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 29.02.2020
Сообщений: 39
1

Сложение двух моментов времени

26.05.2020, 13:29. Показов 2774. Ответов 1

Author24 — интернет-сервис помощи студентам
Время задается в формате час. минута. секунда. Реализовать следующие операции (учесть переход через 24 ч): сложения двух моментов времени;
В коде продемонстрировано вычитание моментов времени, помогите по аналогии сделать сложение моментов времени.

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
using namespace std;
#include<iostream>
class vremya
{
public:
    int vvod();
    int vivod();
    vremya();
    vremya(const vremya&);
    ~vremya();
    friend vremya operator%(const vremya&, const vremya&);
    friend vremya operator-(const vremya&, const vremya&);
    friend ostream& operator<<(ostream&, const vremya&);
    friend istream& operator>>(istream&, const vremya&);
    friend vremya operator+(const vremya&, long int&);
    int* A;
    int n, m, g;
};
//Конструктор без параметров
vremya::vremya()
{
    n = m = g = 4;
};
 
//Конструктор копирования
vremya::vremya(const vremya& t)
{
    n = t.n;
    m = t.m;
    g = t.g;
};
 
//Деструктор
vremya::~vremya()
{
};
 
//Перегрузка операции %
vremya operator%(const vremya& t1, const vremya& t2)
{
 
    vremya c;
    int d;
    c.n = t1.n;
    c.g = t2.g - t1.g;
 
    c.m = t2.m - t1.m;
    if (t2.m < t1.m)
    {
        c.g = c.g - 1; c.m = c.m + 60;
    }
 
    c.n = t2.n - t1.n;
    if (t2.n < t1.n)
    {
        c.m = c.m - 1; c.n = c.n + 60;
    }
    if (c.n > 60)
    {
        c.n = c.n - 60; c.m = c.m + 1;
    }
    if (c.m > 60)
    {
        c.m = c.m - 60;  c.m = c.m + 1;
    }
    d = c.n * 3600 + c.m * 60 + c.g * 1;
    cout << "Количество секунд между двумя моментами времени: " << d << endl;
    return c;
};
 
//Перегрузка операции -
vremya operator-(const vremya& t1, const vremya& t2)
{
 
    vremya c;
    int d;
    c.n = t1.n - t2.n;
    c.m = t1.m - t2.m;
    c.g = t1.g - t2.g;
 
 
    if (t2.m > t1.m)
    {
        c.m = 60 + t1.m - t2.m; c.n = c.n - 1;
    }
 
    if (t2.g > t1.g)
    {
        c.g = 60 + t1.g - t2.g; c.m = c.m - 1;
    }
 
 
    cout << "Вычитание из первого момента времени второго: " << endl;
    cout << c.n << ":" << c.m << ":" << c.g << endl;
    return c;
};
 
 
//Перегрузка операции <<
ostream& operator<<(ostream& os, const vremya& t)
{
    os << t.n << ":" << t.m << ":" << t.g << endl;
    return os;
};
//Перегрузка операции >>
istream& operator>>(istream& is, vremya& t)
{
    cout << "Введите часы" << endl;
    is >> t.n;
    cout << "Введите минуты" << endl;
    is >> t.m;
    cout << "Введите секунды" << endl;
    is >> t.g;
    if (t.n > 24)
    {
        t.n = t.n - 24;
        t.m = t.m + 1;
    }
    if (t.m > 60)
        t.m = t.m + 1;
    cout << t.n << ":" << t.m << ":" << t.g << endl;
    return is;
 
};
 
//Перегрузка операции +
vremya operator+(const vremya& t1, long int& k)
{
    vremya c;
    //ПРосто представим переменную t1 в виде большого-большого количества секунд
    long int temp = t1.n * 3600 + t1.m * 60 + t1.g;
 
 
    //Теперь сложим имеющееся время и прибавляемое
    temp += k;
 
    //А теперь просто переведём temp (большое-большое количество секунд) в часы, минуты и секунда
    c.n = ((temp / 3600) % 24); //Это вот столько часов
 
    //Теперь по минутам
    c.m = temp % 3600 / 60;
 
    //И по секундам
    c.g = temp % 60;
 
    cout << c.n << " " << c.m << " " << c.g << endl;
    return c;
};
 
 
 
 
 
//Главная программа
int main()
{
    setlocale(LC_ALL, "Russian");
    vremya a, b, m;
    long int k, w;
    cout << "Ввод первого момента времени" << endl;
    cin >> a;
    cout << "Ввод второго момента времени" << endl;
    cin >> b;
    m = a % b;
 
    cout << "Ввод первого момента времени" << endl;
    cin >> a;
    cout << "Ввод второго момента времени" << endl;
    cin >> b;
    m = a - b;
 
    cout << "Ввод момента времени" << endl;
    cin >> a;
    cout << "Введите количество секунд, которое хотите прибавить к моменту времени" << endl;
    cin >> k;
    m = a + k;
    //   system ("pause");
    cin >> w;
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2020, 13:29
Ответы с готовыми решениями:

Какой из моментов времени был в эти сутки раньше
Здравствуйте! Подскажите пожалуйста, что значит библиотека stdlib.h и ctime, и строчка 21-23??...

Конкатенация двух нибблов (сложение двух полубайт в байт)
Как из этих двух полубайт получить полноценный байт со значение &quot;0x3e&quot;? unsigned char first_nibbl...

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

Даны значения двух моментов времени, принадлежащих одним и тем же суткам
Даны значения двух моментов времени, принадлежащих одним и тем же суткам: часы, минуты и секунды...

1
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
26.05.2020, 15:05 2
Цитата Сообщение от frostbite101 Посмотреть сообщение
В коде продемонстрировано вычитание моментов времени, помогите по аналогии сделать сложение моментов времени.
C++
1
2
3
4
5
6
7
8
9
10
11
vremya operator +(const vremya& t1, const vremya& t2)
{
    vremya c;
    c.g = t1.g + t2.g;
    c.m = t1.m + t2.m + c.g / 60;
    c.n = t1.g + t2.g + c.m / 60;
 
     c.g %= 60;
     c.m %= 60;
    return c;
}
0
26.05.2020, 15:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.05.2020, 15:05
Помогаю со студенческими работами здесь

Найти отношение моментов времени.
Одно тело свободно падает с высоты h, другое - без трения скользит по наклонной плоскости с углом...

Сколько разных моментов времени могут показать часы?
Если цифровые часы показывают часы, минуты, секунды в 12-часовом формате, то сколько разных...

Сколько различных моментов времени могут показать часы
3. Если часы показывают часы, минуты, секунды и AM-PM, то сколько различных моментов времени они...

Нахождение статистических моментов и моментов инерций
Нигде не могу найти информацию по моментам для плоских и объемных фигур. Пожалуйста напишите...

Все понимаю в код кроме двух моментов ПОМОГИТЕ ПОЖАЛУЙСТА
Все понимаю в коде кроме двух моментов, но Два момента в коде не могу понять, класс BJ_Hand...

Сложение времени
Доброго времени суток! Нужен JavaScript, который складывает время( часы, минуты и секунды) в...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru