C++, Симуляция работы автостоянки

225
11 мая 2018, 12:46

Добро времени суток!

Изучаю язык С++ в университете, нам задали сделать симулятор нахождения оптимального размера Автостоянки-обоймы. Цель: Вам нужно написать программу, чтобы найти оптимальный размер стек-гаража и имитация действий.

  1. Автомобиль идентифицируется моделью (например: «honda» volvo») и уникальный автомобильный 4- хзначный номер (например: 1212, 9999)
  2. Автомобиль подходит к стоянке каждые X минут. X — это случайное число от 1 до 10 минут
  3. Автомобиль покидает стоянку каждые Y минут. Y — случайное число от 1 до 12 минут
  4. Автомобиль от разыгрывается случайным образом из числа всех автомобилей на стоянке
  5. Если в одно и то же время приезжает новый автомобиль и предыдущий водитель хочет взять его автомобиль, прежде чем новый автомобиль заезжает, старый должен выехать, но перед этим, нужно вывезти все машины, которые перекрывают ей путь на поле возле стоянки(поле можно написать любым способом). Предполагаем, что это время занимает меньше минуты.

Программа содержит следующие классы:

  1. Автомобиль: Этот класс будет иметь 2 свойства, передаваемые ему:

• Модель – указатель на строку.

• 4-хзначный уникальный номер –const

В дополнение к этому свойство, содержащее запись времени входа автомобиля в гараж. Реализованы следующие функции:

• Констрактор

• Деконстрактор

Вы можете добавить дополнительные функции по мере необходимости.

  1. Парковка Размер передается во время создания и не может быть изменен. Реализованы следующие функции:

• Констрактор

• Дестрактор

• Push

• Pop

• Size – кол-во занятых мест

• isEmpty

• isFull

Вы можете добавить дополнительные функции по мере необходимости.

Основная программа Выполнение симуляции - день для парковки размеры: 6, 8, 10, 12, с тем чтобы найти оптимальный размер.

• Оптимальный размер это когда в среднем за 10 симуляций кол-во уехавших машин из-за нехватки месте не превышает 5 машин.

Одна итерация:

• Получает размер стека.

• Цикл на протяжении всего времени деятельности парковки(с 8 до 14) (в минутах), и будет разыгрываться время прибытия и выхода автомобилей.

• При вхождении автомобиля на парковку, будет разыграна его марка и его уникальный номер.

• При удалении машины из парковки, будет разыграна случайно стоящая машина на парковке, если машина стоит глубоко внутри, то сначала выедут все впереди стоящие, а после выхода нужной машины вернутся в том же порядке в каком были.

К преподу обратиться не могу, так как он сейчас бастует и не знаю, когда вернется. Вот и пишу сюда.

Answer 1

Определить классы можно так:

using Minutes = unsigned;
class Car {
    std::string* ps;
    const std::array<int, 4> n;
public:
    Car(const std::string& model, const std::array<int, 4>& number) : ps(new string(model)), n(number) {}
    ~Car() { delete ps; }
};
class  Parking {
    const unsigned max_size;
    std::stack<Car>* pc;
public:
    Parking(unsigned places) : max_size(places), pc(new stack<Car>()) {}
    ~Parking() { delete pc; }
    void push(const Car& c) { return pc->push(c); }
    void pop() { return pc->pop(); }
    unsigned Size() const { return pc->size();  }
    bool isEmpty() const  { return pc->empty(); }
    bool isFull() const  { return pc->size() == max_size; }
};

В стек ложится в конец и удаляется с конца, как требует ваша задача. Теперь подумайте сами как написать симулятор и какие дополнительные функции понадобятся в классах

READ ALSO
Как на C++ сделать запрос SMART SSD&amp;HDD?

Как на C++ сделать запрос SMART SSD&HDD?

Не могу найти примеры как через C++ сделать запрос по SMART SSD&HDD?

236
Сборка в CMake и Poco lib

Сборка в CMake и Poco lib

Для компиляции обычного проекта, я закидывал нужные dll из Poco в папку проектаКак мне сейчас при сборке проекта уже в CMake, связать папку с dll (как...

187
Какой алгоритм этой программы? Или как реализовать код? Я в замешательстве [требует правки]

Какой алгоритм этой программы? Или как реализовать код? Я в замешательстве [требует правки]

Хочу получить хоть какие-то советы, рекомендации или хоть какую-то реализацию кода этой задачи http://it-practicein

189
Определение изменения в div

Определение изменения в div

Есть div page_left предметами, предметов может быть многоЕсли мы кликаем на предмет то его имя записывается в div с id page_right

248