typedef struct ttime {
Си, на ++ не нужен typedef.
И используй наконец тэги для кода.
int hours; int minute; int sec;
Странное именование, обычно пишут hour.
struct date {
ttime time;
которая в свою очередь входит в состав структуры Date.
Странно, ведь это не дата, а скорее Clock — часы.
Методы позволяют изменять текущее время
Ну и где тут измерение?
Моя архитектура.
1. Время. Получение времени из системы, сравнение, вывод в консоль.
2. Часы. Хранят последнее время. Команда «tick» — получить время, сравнить с последним, при неравенстве — сохранить новое и вывести его в консоль.
3. Внешний цикл (может быть как в часах, так и снаружи). Часы тикают, делают небольшую задержку и проверяют на нажатие клавиши.
Пять объектов никак не будет, да и Date нужно только в том случае, если вы реально работаете с датой. Я бы, чтобы докинуть количество объектов до нужного, сделал бы дату (date), время (time) и дату-время (stamp).
Для турнира единоборств (для простоты — без весовых категорий).
• Fighter: имя, всякая информация про него вроде города, клуба и титулов.
• Stub: указатель на Fight + enum (Winner/Loser) — откуда берётся участник. Указателя на Fight нет — тогда TBD (то есть не определился).
• Participant: указатель на Fighter + структура stub.
• Fight: номер, два Participant, дата/время, кто победил (0/1), причина победы (ещё не проводился, KO, TKO, по очкам, неявка…)
• Tournament: содержит список боёв и таблицу результатов.
Можно также разорвать кольцо зависимостей, наладив интерфейс FightInfo, сделав в Stub FightInfo*, а не Fight*, и чтобы Fight реализовывал FightInfo.