Перейти к содержимому
Задача · Многопоточность: обзор · урок 10 из 10

Задача: таймер обратного отсчёта

Напишите класс Countdown — таймер обратного отсчёта, поля добавьте сами. Конструктор Countdown(std::chrono::minutes limit) задаёт лимит времени, а метод void spend(std::chrono::milliseconds time) вычитает потраченное время из остатка. std::chrono::seconds remaining() const возвращает остаток в целых секундах, а bool expired() const сообщает, вышло ли время.

  • для Countdown c(1min): c.remaining() → 60s
  • после c.spend(20s) и c.spend(500ms): c.remaining() → 39s
  • после ещё одного c.spend(39s): c.remaining() → 0s, а c.expired() → false

Ограничения: limit больше нуля, а time не меньше нуля. remaining() отбрасывает дробную часть секунды и при перерасходе возвращает 0s, а expired() возвращает true, когда от лимита не осталось ни миллисекунды.

durations.cpp — cpp
cpp · строк: 19
Ctrl+Enter запуск · Esc выйти из редактора