Summary Files Commits Branches @commit @diff @stats
path: root / Year 2 / Structures and data algorithms / Project / exc / Box.cpp
diff options
context:
space:
mode:
Commit0e9be940d16311036ee36aed47406481a26fdd82 (patch)
Author
 Syndamia <kamen@syndamia.com>
2022-12-27 12:36:09 +0200
Committer
 Syndamia <kamen@syndamia.com>
2022-12-27 12:36:09 +0200
Files037e24d902f1a5e32544fc41bd4e737ae491f8f8 /Year 2/Structures and data algorithms/Project/exc/Box.cpp
uni-projects-0e9be940d16311036ee36aed47406481a26fdd82.tar
uni-projects-0e9be940d16311036ee36aed47406481a26fdd82.tar.gz
uni-projects-0e9be940d16311036ee36aed47406481a26fdd82.zip
Parent06e1b9276cc1c709a24665399abebcdcefd3cb3e (diff)
[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.cpp31
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, "");
+}