diff options
[SDP/P] Only direct subboxes are removed in third exercise
1 files changed, 31 insertions, 0 deletions
| -rw-r--r-- | Year 2/Structures and data algorithms/Project/exc/Box.cpp | 31 |
diff --git a/Year 2/Structures and data algorithms/Project/exc/Box.cpp b/Year 2/Structures and data algorithms/Project/exc/Box.cpp new file mode 100644 index 0000000..844a337 --- /dev/null +++ b/Year 2/Structures and data algorithms/Project/exc/Box.cpp @@ -0,0 +1,31 @@ +#include "Box.h" + +void Box::removeUselessSubBoxes() { + for (auto i = subboxes.begin(); i != subboxes.end(); ++i) { + if ((*i)->items.empty() && (*i)->subboxes.size() < 2) { + if ((*i)->subboxes.empty()) { + subboxes.erase(i); + continue; + } + + *i = (*i)->subboxes[0]; + } + // else + // (*i)->removeUselessSubBoxes(); + } +} + +std::ostream& Box::printWithInd(std::ostream& ostr, std::string indent) { + ostr << indent << name << std::endl; + for (std::string& i : items) + ostr << indent << "+ " << i << std::endl; + + indent += " "; + for (Box* sb : subboxes) + sb->printWithInd(ostr, indent); + return ostr; +} + +std::ostream& Box::print(std::ostream& ostr) { + return printWithInd(ostr, ""); +} |
