/
haseew
/
Lab_2
Обзор
Документация
Войти
/
haseew
/
Lab_2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Stock.cpp
87 строк
3 KB
haseew
create: Bell.cpp, Bell.h, CMakeLists.txt, compleks.cpp, compleks.h, OddEvenSeparator.cpp, OddEvenSeparator.h, Stock.cpp, Stock.h, Table.cpp, Table.h, main.cpp, otchet_lab2.doc
04 мар 2026, 19:20
Верифицирован
04 мар 2026, 19:20
e5db715
Код
Авторство
О чём код?
#include "Stock.h" #include <iostream> Stock::Stock() { next_id = 0; } // Добавление новой коробки void Stock::Add(int w, int v) { Box b; b.id = next_id++; b.w = w; b.v = v; b.issued = false; // Изначально коробка на складе boxes.push_back(b); } // Поиск по грузоподъемности (w) int Stock::GetByW(int min_w) { int best_id = -1; int best_w = -1; for (const Box& b : boxes) { // Проверяем только НЕ выданные коробки, которые подходят по весу if (!b.issued && b.w >= min_w) { // Если мы еще не нашли ни одной подходящей ИЛИ нашли коробку с МЕНЬШЕЙ грузоподъемностью if (best_id == -1 || b.w < best_w) { best_id = b.id; best_w = b.w; } // Если мы нашли коробку с ТАКОЙ ЖЕ минимальной грузоподъемностью else if (b.w == best_w) { // Выбираем ту, которая пролежала МЕНЬШЕ. // Меньше пролежала та, которую привезли позже, то есть у нее БОЛЬШЕ id. if (b.id > best_id) { best_id = b.id; } } } } // Если коробка найдена, помечаем её как выданную (убираем со склада) if (best_id != -1) { boxes[best_id].issued = true; } return best_id; } // Поиск по объему (v) - логика аналогичная int Stock::GetByV(int min_v) { int best_id = -1; int best_v = -1; for (const Box& b : boxes) { if (!b.issued && b.v >= min_v) { if (best_id == -1 || b.v < best_v) { best_id = b.id; best_v = b.v; } else if (b.v == best_v) { if (b.id > best_id) { best_id = b.id; } } } } if (best_id != -1) { boxes[best_id].issued = true; } return best_id; } // Вывод содержимого склада для наглядности void Stock::Print() const { std::cout << "[Sklad] Tekushchie korobki:" << std::endl; bool empty = true; for (const Box& b : boxes) { if (!b.issued) { // Печатаем только те, что еще на складе std::cout << " id: " << b.id << " | w: " << b.w << " | v: " << b.v << std::endl; empty = false; } } if (empty) { std::cout << " Sklad pust!" << std::endl; } }