Добрый день! Нужна ваша помощь. Есть такое задание:
Создать программу, имитирующую рабочий день мойки автомобилей.
Программа должна содержать класс, описывающий автомойку и класс,
описывающий очередь автомобилей.
Рабочий день длится 480 минут(1 минута 1 итерация цикла). Каждую минуту, с шансом
10%, в очередь добавляется новая машина. Если мойка свободна, первая машина из
очереди перемещается на мойку. Помывка одной машины занимает 10 минут.
Определить максимальное время простоя мойки за день и максимальную величину
очереди.
Есть вот такой класс очередь
#pragma once
template<class T>
class Queue
{
T* arr = nullptr;
int capacity = 0;
int size = 0;
public:
Queue();
Queue(int c);
Queue(const Queue& obj);
Queue(Queue&& obj) noexcept;
~Queue();
Queue<T>& operator=(const Queue& obj);
Queue<T>& operator=(Queue&& obj) noexcept;
void push(T val);
T pop();
T peek() const;
bool is_empty() const;
bool is_full() const;
};
template<class T>
Queue<T>::Queue()
{
capacity = 100;
arr = new T[capacity]{};
}
template<class T>
Queue<T>::Queue(int c)
{
capacity = c;
arr = new T[capacity]{};
}
template<class T>
Queue<T>::Queue(const Queue& obj)
{
capacity = obj.capacity;
size = obj.size;
arr = new T[capacity]{};
for (int i = 0; i < size; ++i)
{
arr[i] = obj.arr[i];
}
}
template<class T>
Queue<T>::Queue(Queue&& obj) noexcept
{
capacity = obj.capacity;
size = obj.size;
arr = obj.arr;
obj.capacity = 0;
obj.size = 0;
obj.arr = nullptr;
}
template<class T>
Queue<T>::~Queue()
{
if (capacity)
delete[]arr;
}
template<class T>
Queue<T>& Queue<T>::operator=(const Queue& obj)
{
if (this == &obj)
return *this;
if (capacity)
delete[]arr;
capacity = obj.capacity;
size = obj.size;
arr = new T[capacity]{};
for (int i = 0; i < size; ++i)
{
arr[i] = obj.arr[i];
}
return *this;
}
template<class T>
Queue<T>& Queue<T>::operator=(Queue&& obj) noexcept
{
if (this == &obj)
return *this;
if (capacity)
delete[]arr;
capacity = obj.capacity;
size = obj.size;
arr = obj.arr;
obj.capacity = 0;
obj.size = 0;
obj.arr = nullptr;
return *this;
}
template<class T>
void Queue<T>::push(T val)
{
arr[size++] = val;
}
template<class T>
T Queue<T>::pop()
{
T tmp = arr[0];
for (int i = 1; i < size; ++i)
{
arr[i - 1] = arr[i];
}
size--;
return tmp;
}
template<class T>
T Queue<T>::peek() const
{
return arr[0];
}
template<class T>
bool Queue<T>::is_empty() const
{
return size == 0;
}
template<class T>
bool Queue<T>::is_full() const
{
return size == capacity;
}
Нужно создать классы для автомобилей и мойки. Как собрать все вместе? С чего начать?