Предмет: Информатика, автор: yes121221

помогите решить на C++


Добавьте для класса Timer возможность сохранять начальное время и, в случае, если оставшееся время на таймере - 0 секунд, то вместо вывода сообщения "Done!" восстановите начальное значение времени.


Формат входных данных

В первой строке входных данных вводятся 3 целых числа H, M и S - часы, минуты и секунды соответственно.


Гарантируется, что данные верные.


Во второй строке вводится натуральное число T - количество секунд, в течение которых время должно изменяться.


Формат выходных данных

Выведите T строк в формате hh:mm:ss - время на таймере после каждой новой секунды.


Примечания

В задачу необходимо отправить оба класса: Clock и Timer.


входные данные выходные данные

1 5 51

7

01:05:50

01:05:49

01:05:48

01:05:47

01:05:46

01:05:45

01:05:44

20 21 5

4

20:21:04

20:21:03

20:21:02

20: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;

}

Ответы

Автор ответа: msofiya1041
1

#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;

}

Похожие вопросы
Предмет: Русский язык, автор: syavarg
Предмет: Қазақ тiлi, автор: ник3286