
Помогите решить на C++ Добавьте для класса Timer возможность сохранять начальное время и, в
случае, если оставшееся время на таймере - 0 секунд, то вместо вывода сообщения "Done!" восстановите начальное значение времени.Формат входных данныхВ первой строке входных данных вводятся 3 целых числа H, M и S - часы, минуты и секунды соответственно.Гарантируется, что данные верные.Во второй строке вводится натуральное число T - количество секунд, в течение которых время должно изменяться.Формат выходных данныхВыведите T строк в формате hh:mm:ss - время на таймере после каждой новой секунды.ПримечанияВ задачу необходимо отправить оба класса: Clock и Timer.входные данные выходные данные1 5 51701:05:5001:05:4901:05:4801:05:4701:05:4601:05:4501:05:4420 21 5420:21:0420:21:0320:21:0220:21:01 часть программыint main() { int h, m, s, t; cin >> h >> m >> s >> t; Timer c(h, m, s); Clock anticheat(h, m, s); //Проверка, что описаны оба класса for (int i = 0; i < t; i++) { c.tic(); c.print(); } return 0;}

Ответы на вопрос

#include <iostream>
#include<string>
using namespace std;
class Clock {
protected:
int hours;
int minutes;
int secounds;
public:
Clock(int _hours = 0, int _minutes = 0, int _secounds = 0) :
hours(_hours), minutes(_minutes), secounds(_secounds) {}
void tic() {
secounds++;
}
void print() {
int sum = hours * 60 * 60 + minutes * 60 + secounds;
cout << (sum / 3600 < 10 ? "0" : "") << sum / 3600 <<":";
cout << (sum % 3600 / 60 < 10 ? "0" : "") << sum % 3600 / 60 << ":";
cout << (sum % 3600 % 60 < 10 ? "0" : "")<< sum % 3600 % 60 << endl;
}
};
class Timer : public Clock {
public:
Timer(int _hours = 0, int _minutes = 0, int _secounds = 0) : Clock(_hours, _minutes, _secounds) {}
int save_hours = hours;
int save_minutes = minutes;
int save_secounds = secounds;
void tic() {
int sum = hours * 60 * 60 + minutes * 60 + secounds;
if (sum == 0) { hours = save_hours; minutes = save_minutes; secounds = save_secounds-1;}
else secounds--;
}
};
int main() {
int h, m, s, t;
cin >> h >> m >> s >> t;
Timer c(h, m, s);
Clock anticheat(h, m, s); //Проверка, что описаны оба класса
for (int i = 0; i < t; i++) {
c.tic();
c.print();
}
return 0;
}



Класс Timer:
```cpp
#include
class Timer { int initial_h, initial_m, initial_s; int current_h, current_m, current_s; public: Timer(int h, int m, int s) { initial_h = h; initial_m = m; initial_s = s; current_h = h; current_m = m; current_s = s; }
void tic() { if (current_s > 0) { current_s--; } else { if (current_m > 0) { current_m--; current_s = 59; } else { if (current_h > 0) { current_h--; current_m = 59; current_s = 59; } } } }
void print() { if (current_h == 0 && current_m == 0 && current_s == 0) { cout << initial_h << ":" << initial_m << ":" << initial_s << endl; current_h = initial_h; current_m = initial_m; current_s = initial_s; } else { cout << current_h << ":" << current_m << ":" << current_s << endl; } } }; ```
Класс Clock:
```cpp class Clock { int h, m, s; public: Clock(int h, int m, int s) { this->h = h; this->m = m; this->s = s; } }; ```
Функция main:
```cpp int main() { int h, m, s, t; cin >> h >> m >> s >> t; Timer c(h, m, s); Clock anticheat(h, m, s); for (int i = 0; i < t; i++) { c.tic(); c.print(); } return 0; } ```


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili