Лабораторная работа
Нужно выполнить следующею лабораторную работу в консольном приложении:
Написать программу, реализующую иерархию классов собирателей водорослей (Collector).
Собиратели бывают следующих типов:
Дельфин (Dolphin) Стартовая скорость не зависит от оплаты (её не платят) и составляет 15 кг/час. Коэффициент уставания – 0.1.
Водолаз (Diver) Стартовая скорость кусочно-линейно зависит от оплаты: в диапазоне 0–120 грн пропорциональна оплате, коэффициент пропорциональности–0.3кг/грн. При дальнейшем росте оплаты стартовая скорость остаётся постоянной. Коэффициент уставания – 0.3.
Доброволец (Volunteer) Стартовая скорость зависит от оплаты таким образом:
v=10∙(1-exp(-0.2x) ),
где v – скорость в кг/час, x – оплата в грн/час.
Коэффициент уставания – 0.4.
Киборг (Cyborg) Стартовая скорость не зависит от оплаты и составляет 7 кг/час. Коэффициент уставания – 0.01, но после 4 часов работы киборг выключается из-за истощения топливного элемента. Имя для всех киборгов одно (IС1000).
В программе завести массив собирателей, заполнить конкретных собирателей разных типов. Для измерения добычи для каждого объекта по указателю вызывается функция work без аргументов, возвращающая искомый показатель. Перед работой каждый сборщик получает (или игнорирует) оплату с помощью функции pay. После каждого часа работы скорость падает пропорционально коэффициенту уставания. Например, при начальной скорости 10 кг/час и коэффициенте уставания 0.15 в первый час будет собрано 10 кг, во второй – 8.5 кг, в третий – 7.225 кг. и т.д.
Вывести почасовую добычу всех созданных собирателей.
Предоставить возможность определить для каждого типа количество собирателей и полное количество всех собирателей