From 1e2ae0cbfa8be5c54519ac800f71ee6642654d3d Mon Sep 17 00:00:00 2001 From: Mateusz Moskala Date: Mon, 7 Apr 2025 16:01:28 +0200 Subject: [PATCH] Sort implementation --- homework/length-sort/build.bat | 10 ++++++++++ homework/length-sort/sort.cpp | 19 +++++++++++++++++++ homework/length-sort/sort.hpp | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 homework/length-sort/build.bat create mode 100644 homework/length-sort/sort.cpp create mode 100644 homework/length-sort/sort.hpp diff --git a/homework/length-sort/build.bat b/homework/length-sort/build.bat new file mode 100644 index 000000000..36895d15a --- /dev/null +++ b/homework/length-sort/build.bat @@ -0,0 +1,10 @@ +RMDIR build /S /Q +mkdir build +cd build +cmake -G "MinGW Makefiles" .. +MinGW32-make + +lengthSort-ut.exe + +cd .. + diff --git a/homework/length-sort/sort.cpp b/homework/length-sort/sort.cpp new file mode 100644 index 000000000..68cf90b7d --- /dev/null +++ b/homework/length-sort/sort.cpp @@ -0,0 +1,19 @@ +#include "sort.hpp" +#include + +std::deque lengthSort(const std::forward_list& words) { + std::deque sorted(words.begin(), words.end()); + + std::sort(sorted.begin(), sorted.end(), [](const std::string& s1, const std::string& s2) { + if (s1.length() == s2.length()) { + for (size_t i = 0; i < s1.length(); i++) { + if (s1[i] != s2[i]) { + return s1[i] < s2[i]; + } + } + } else { + return s1.length() < s2.length(); + } + }); + return sorted; +} diff --git a/homework/length-sort/sort.hpp b/homework/length-sort/sort.hpp new file mode 100644 index 000000000..b5b9af63b --- /dev/null +++ b/homework/length-sort/sort.hpp @@ -0,0 +1,7 @@ +#pragma once + +#include +#include +#include + +std::deque lengthSort(const std::forward_list& words); \ No newline at end of file