#include "Box.h" #include #include #include /* Самото решение се намира в removeUselessSubBoxes в Box.cpp */ int main() { std::ifstream inFile("boxesList.txt"); if (!inFile.is_open()) throw std::runtime_error("No file named boxesList.txt exists!"); unsigned b = 0; inFile >> b; std::deque boxes; std::deque bigBoxes; std::string name; unsigned n = 0; Box* current = nullptr; Box* cSubbox = nullptr; while (b-- > 0 && !inFile.eof()) { inFile >> name; // Get or create a box with the given name current = nullptr; for (Box* cb : boxes) { if (cb->get_name() == name) { current = cb; } } if (current == nullptr) { current = new Box(name); boxes.push_back(current); bigBoxes.push_back(current); } // Add items to box inFile >> n; // Item count while (n-- > 0) { inFile >> name; current->pushItem(name); } // Add subboxes inFile >> n; // Subboxes count while (n-- > 0) { inFile >> name; // Find or create new box cSubbox = nullptr; for (Box* cb : boxes) { if (cb->get_name() == name) cSubbox = cb; } if (cSubbox == nullptr) { cSubbox = new Box(name); boxes.push_back(cSubbox); } current->pushSubbox(cSubbox); } } inFile.close(); for (Box* cb : bigBoxes) { cb->removeUselessSubBoxes(); cb->print(std::cout) << std::endl; } // Free memory for (Box* b : boxes) delete b; }