From aa06b1ff877130d978e611a8cd746908b4f9b8b1 Mon Sep 17 00:00:00 2001 From: karskanovas <155314713+karskanovas@users.noreply.github.com> Date: Fri, 28 Nov 2025 19:47:23 +0500 Subject: [PATCH 01/44] Update addition.cpp --- 01_week/tasks/addition/addition.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/01_week/tasks/addition/addition.cpp b/01_week/tasks/addition/addition.cpp index 92872802..b185d50b 100644 --- a/01_week/tasks/addition/addition.cpp +++ b/01_week/tasks/addition/addition.cpp @@ -1,7 +1,5 @@ #include -#include - int64_t Addition(int a, int b) { - throw std::runtime_error{"Not implemented"}; -} \ No newline at end of file + return static_cast(a) + static_cast(b); +} From 240b2e774d35587147d9b3373f09b22a14c969c0 Mon Sep 17 00:00:00 2001 From: karskanovas <155314713+karskanovas@users.noreply.github.com> Date: Fri, 28 Nov 2025 19:50:14 +0500 Subject: [PATCH 02/44] Addition task (#1) * add 1: add addition task * Add addition.cpp only * add 1: add char_changer task * add : add check_flags task --- 01_week/tasks/char_changer/char_changer.cpp | 57 +++++++++++++++++++-- 01_week/tasks/check_flags/check_flags.cpp | 26 ++++++++-- addition.cpp | 5 ++ 3 files changed, 81 insertions(+), 7 deletions(-) create mode 100644 addition.cpp diff --git a/01_week/tasks/char_changer/char_changer.cpp b/01_week/tasks/char_changer/char_changer.cpp index 3a7344d9..f8dfb9ec 100644 --- a/01_week/tasks/char_changer/char_changer.cpp +++ b/01_week/tasks/char_changer/char_changer.cpp @@ -1,7 +1,56 @@ #include -#include - +#include +#include size_t CharChanger(char array[], size_t size, char delimiter = ' ') { - throw std::runtime_error{"Not implemented"}; -} + size_t write_idx = 0; + auto get_mapped_char = [&](char ch) -> char { + if (std::isspace(static_cast(ch))) { + return delimiter; + } else if (std::isdigit(static_cast(ch))) { + return '*'; + } else if (std::isalpha(static_cast(ch))) { + return std::toupper(static_cast(ch)); + } else { + return '_';} + }; + size_t read_idx = 0; + while (read_idx < size && array[read_idx] != '\0') { + char current_char = array[read_idx]; + char mapped_char = get_mapped_char(current_char); + size_t count = 1; + size_t next_idx = read_idx + 1; + while (next_idx < size && array[next_idx] != '\0') { + char next_char = array[next_idx]; + char mapped_next_char = get_mapped_char(next_char); + if (mapped_next_char != mapped_char) break; + if (mapped_char == '*' || mapped_char == '_') { + if (current_char != next_char) break; + } + if (mapped_char >= 'A' && mapped_char <= 'Z') { + bool current_is_lower = std::islower(static_cast(current_char)); + bool next_is_lower = std::islower(static_cast(next_char)); + + if (current_is_lower != next_is_lower) break; + } + count++; + next_idx++;} + bool is_delimiter_sequence = (mapped_char == delimiter) && std::isspace(static_cast(current_char)); + if (is_delimiter_sequence) { + if (write_idx == 0 || array[write_idx - 1] != delimiter) { + array[write_idx++] = delimiter; + } + } else { + array[write_idx++] = mapped_char; + + if (count > 1) { + if (count < 10) { + array[write_idx++] = '0' + count; + } else { + array[write_idx++] = '0';} + } + } + read_idx += count;} + array[write_idx] = '\0'; + return write_idx; +} \ No newline at end of file diff --git a/01_week/tasks/check_flags/check_flags.cpp b/01_week/tasks/check_flags/check_flags.cpp index 75e7c652..62ae5386 100644 --- a/01_week/tasks/check_flags/check_flags.cpp +++ b/01_week/tasks/check_flags/check_flags.cpp @@ -1,6 +1,5 @@ #include -#include - +#include enum class CheckFlags : uint8_t { NONE = 0, @@ -14,5 +13,26 @@ enum class CheckFlags : uint8_t { }; void PrintCheckFlags(CheckFlags flags) { - throw std::runtime_error{"Not implemented"}; + uint8_t value = static_cast(flags); + uint8_t all = static_cast(CheckFlags::ALL); + if ((value & ~all) != 0) { + return; } + if (value == 0) { + std::cout << "[]"; + return;} + std::cout << "["; + bool first = true; + auto print_flag = [&](CheckFlags f, const char* name) { + if (value & static_cast(f)) { + if (!first) std::cout << ","; + std::cout << name; + first = false;} + }; + print_flag(CheckFlags::TIME, "TIME"); + print_flag(CheckFlags::DATE, "DATE"); + print_flag(CheckFlags::USER, "USER"); + print_flag(CheckFlags::CERT, "CERT"); + print_flag(CheckFlags::KEYS, "KEYS"); + print_flag(CheckFlags::DEST, "DEST"); + std::cout << "]"; } diff --git a/addition.cpp b/addition.cpp new file mode 100644 index 00000000..b185d50b --- /dev/null +++ b/addition.cpp @@ -0,0 +1,5 @@ +#include + +int64_t Addition(int a, int b) { + return static_cast(a) + static_cast(b); +} From 8374322b062c9ff6aee944af079202581fb09662 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 28 Nov 2025 20:10:19 +0500 Subject: [PATCH 03/44] ignore build directory --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..567609b1 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build/ From 73267dff7fc1d2d7bb486c72871cf7067acd436d Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 28 Nov 2025 20:24:18 +0500 Subject: [PATCH 04/44] add: add length_lit task --- 01_week/tasks/length_lit/length_lit.cpp | 49 +++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/01_week/tasks/length_lit/length_lit.cpp b/01_week/tasks/length_lit/length_lit.cpp index e69de29b..9fd2204b 100644 --- a/01_week/tasks/length_lit/length_lit.cpp +++ b/01_week/tasks/length_lit/length_lit.cpp @@ -0,0 +1,49 @@ +#include + +constexpr long double operator"" _ft_to_m(long double v) { + return static_cast(v * 0.3048L); +} + +constexpr long double operator"" _ft_to_in(long double v) { + return static_cast(v * 12.0L); +} + +constexpr long double operator"" _ft_to_cm(long double v) { + return static_cast(v * 30.48L); +} + +constexpr long double operator"" _in_to_ft(long double v) { + return static_cast(v / 12.0L); +} + +constexpr long double operator"" _in_to_m(long double v) { + return static_cast(v * 0.0254L); +} + +constexpr long double operator"" _in_to_cm(long double v) { + return static_cast(v * 2.54L); +} + +constexpr long double operator"" _cm_to_in(long double v) { + return static_cast(v / 2.54L); +} + +constexpr long double operator"" _cm_to_ft(long double v) { + return static_cast(v / 30.48L); +} + +constexpr long double operator"" _cm_to_m(long double v) { + return static_cast(v / 100.0L); +} + +constexpr long double operator"" _m_to_cm(long double v) { + return static_cast(v * 100.0L); +} + +constexpr long double operator"" _m_to_in(long double v) { + return static_cast(v / 0.0254L); +} + +constexpr long double operator"" _m_to_ft(long double v) { + return static_cast(v / 0.3048L); +} From 4b96e10de0a42fcdaa6c84ef93e5eb59ae02f873 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 28 Nov 2025 20:42:14 +0500 Subject: [PATCH 05/44] add: add print_bits task --- 01_week/tasks/print_bits/print_bits.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/01_week/tasks/print_bits/print_bits.cpp b/01_week/tasks/print_bits/print_bits.cpp index a48a43c1..c74f3077 100644 --- a/01_week/tasks/print_bits/print_bits.cpp +++ b/01_week/tasks/print_bits/print_bits.cpp @@ -1,7 +1,16 @@ #include -#include - +#include void PrintBits(long long value, size_t bytes) { - throw std::runtime_error{"Not implemented"}; -} + if (bytes == 0 || bytes > 8) + return; + std::cout << "0b"; + size_t total_bits = bytes * 8; + for (size_t i = 0; i < total_bits; ++i) { + size_t bit_index = total_bits - 1 - i; + bool bit = (value >> bit_index) & 1; + std::cout << (bit ? '1' : '0'); + if (i % 4 == 3 && i + 1 < total_bits) + std::cout << "'"; } + std::cout << "\n"; +} \ No newline at end of file From 71bc667dc0ecac72f40740a359c56c6d638126d4 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 28 Nov 2025 20:59:38 +0500 Subject: [PATCH 06/44] add: add quadratic task --- 01_week/tasks/quadratic/quadratic.cpp | 38 ++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/01_week/tasks/quadratic/quadratic.cpp b/01_week/tasks/quadratic/quadratic.cpp index abf7d632..5c660edc 100644 --- a/01_week/tasks/quadratic/quadratic.cpp +++ b/01_week/tasks/quadratic/quadratic.cpp @@ -1,6 +1,38 @@ -#include - +#include +#include void SolveQuadratic(int a, int b, int c) { - throw std::runtime_error{"Not implemented"}; + auto print = [](double x) { + if (std::abs(x) < 1e-9) x = 0; + if (std::abs(x - std::round(x)) < 1e-9) { + std::cout << static_cast(std::round(x)); + } else { + x = std::round(x * 1e6) / 1e6; //округление (тест) + std::cout << x;} + }; + if (a == 0) { + if (b == 0) { + if (c == 0) std::cout << "infinite solutions"; + else std::cout << "no solutions"; + } else { + double x = -static_cast(c) / b; + print(x);} + return;} + double D = static_cast(b) * b - 4.0 * a * c; + if (D < 0) { + std::cout << "no solutions"; + } else if (D == 0) { + double x = -static_cast(b) / (2.0 * a); + print(x); + } else { + double sqrtD = std::sqrt(D); + double x1 = (-b - sqrtD) / (2.0 * a); + double x2 = (-b + sqrtD) / (2.0 * a); + if (x1 > x2) { + double temp = x1; + x1 = x2; + x2 = temp;} + print(x1); + std::cout << " "; + print(x2);} } \ No newline at end of file From b5703271f6e16ef3cc4a297a34f438a24e19b6d6 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 28 Nov 2025 21:04:25 +0500 Subject: [PATCH 07/44] add: add rms task --- 01_week/tasks/rms/rms.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/01_week/tasks/rms/rms.cpp b/01_week/tasks/rms/rms.cpp index 6882f0a9..d2851b81 100644 --- a/01_week/tasks/rms/rms.cpp +++ b/01_week/tasks/rms/rms.cpp @@ -1,7 +1,12 @@ -#include +#include +#include #include - double CalculateRMS(double values[], size_t size) { - throw std::runtime_error{"Not implemented"}; -} \ No newline at end of file + if (size == 0) return 0.0; + if (values == nullptr) return 0.0; + double sum_squares = 0.0; + for (size_t i = 0; i < size; ++i) { + sum_squares += values[i] * values[i];} + return std::sqrt(sum_squares / static_cast(size)); +} From 7be7e34e7159381ca636642b0457578df78b1ede Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 28 Nov 2025 21:33:09 +0500 Subject: [PATCH 08/44] fix: add addition task --- 01_week/tasks/addition/addition.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/01_week/tasks/addition/addition.cpp b/01_week/tasks/addition/addition.cpp index b185d50b..0ef148c4 100644 --- a/01_week/tasks/addition/addition.cpp +++ b/01_week/tasks/addition/addition.cpp @@ -1,5 +1,6 @@ #include int64_t Addition(int a, int b) { + return static_cast(a) + static_cast(b); } From 15175f36344d81d1eb3375a28741fd64f1368c59 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 28 Nov 2025 22:01:25 +0500 Subject: [PATCH 09/44] fix: add char_changer task --- 01_week/tasks/char_changer/char_changer.cpp | 83 +++++++++------------ 1 file changed, 36 insertions(+), 47 deletions(-) diff --git a/01_week/tasks/char_changer/char_changer.cpp b/01_week/tasks/char_changer/char_changer.cpp index f8dfb9ec..3a21d13e 100644 --- a/01_week/tasks/char_changer/char_changer.cpp +++ b/01_week/tasks/char_changer/char_changer.cpp @@ -3,54 +3,43 @@ #include size_t CharChanger(char array[], size_t size, char delimiter = ' ') { - size_t write_idx = 0; - auto get_mapped_char = [&](char ch) -> char { - if (std::isspace(static_cast(ch))) { - return delimiter; - } else if (std::isdigit(static_cast(ch))) { - return '*'; - } else if (std::isalpha(static_cast(ch))) { - return std::toupper(static_cast(ch)); - } else { - return '_';} - }; - size_t read_idx = 0; - while (read_idx < size && array[read_idx] != '\0') { - char current_char = array[read_idx]; - char mapped_char = get_mapped_char(current_char); + size_t w = 0; + auto map_char = [&](char ch) -> char { + unsigned char uc = ch; //в этом месте возникала ошибка, решено использовать unsigner + if (std::isspace(uc)) return delimiter; + if (std::isdigit(uc)) return '*'; + if (std::isalpha(uc)) return (char)std::toupper(uc); + return '_'; }; + size_t r = 0; + while (r < size && array[r] != '\0') { + char current = array[r]; + char mapped = map_char(current); size_t count = 1; - size_t next_idx = read_idx + 1; - while (next_idx < size && array[next_idx] != '\0') { - char next_char = array[next_idx]; - char mapped_next_char = get_mapped_char(next_char); - if (mapped_next_char != mapped_char) break; - if (mapped_char == '*' || mapped_char == '_') { - if (current_char != next_char) break; - } - if (mapped_char >= 'A' && mapped_char <= 'Z') { - bool current_is_lower = std::islower(static_cast(current_char)); - bool next_is_lower = std::islower(static_cast(next_char)); - - if (current_is_lower != next_is_lower) break; - } + size_t next = r + 1; + while (next < size && array[next] != '\0') { + char next_char = array[next]; + char mapped_next = map_char(next_char); + if (mapped_next != mapped) break; + if (mapped == '*' || mapped == '_') { + if (current != next_char) break; + } else if (mapped >= 'A' && mapped <= 'Z') { + unsigned char curr_uc = current; + unsigned char next_uc = next_char; + if (std::islower(curr_uc) != std::islower(next_uc)) break; } count++; - next_idx++;} - bool is_delimiter_sequence = (mapped_char == delimiter) && std::isspace(static_cast(current_char)); - if (is_delimiter_sequence) { - if (write_idx == 0 || array[write_idx - 1] != delimiter) { - array[write_idx++] = delimiter; - } - } else { - array[write_idx++] = mapped_char; - + next++;} + unsigned char current_uc = current; + bool is_space_seq = (mapped == delimiter) && std::isspace(current_uc); + if (is_space_seq) { + bool is_letter_delimiter = (delimiter >= 'A' && delimiter <= 'Z'); + if (is_letter_delimiter || w == 0 || array[w - 1] != delimiter) { + array[w++] = delimiter;} + } else { + array[w++] = mapped; if (count > 1) { - if (count < 10) { - array[write_idx++] = '0' + count; - } else { - array[write_idx++] = '0';} - } - } - read_idx += count;} - array[write_idx] = '\0'; - return write_idx; + char repeat_char = (count < 10) ? ('0' + count) : '0'; + array[w++] = repeat_char;}} + r += count; } + array[w] = '\0'; + return w; } \ No newline at end of file From 392bcb25d860cb3282542c667beb8f630baf870d Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 28 Nov 2025 23:18:39 +0500 Subject: [PATCH 10/44] fix: add check_flags task --- 01_week/tasks/check_flags/check_flags.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/01_week/tasks/check_flags/check_flags.cpp b/01_week/tasks/check_flags/check_flags.cpp index 62ae5386..008ab672 100644 --- a/01_week/tasks/check_flags/check_flags.cpp +++ b/01_week/tasks/check_flags/check_flags.cpp @@ -1,6 +1,7 @@ #include #include + enum class CheckFlags : uint8_t { NONE = 0, TIME = (1 << 0), From 8c32ee1450994e27d7b1cbfdf13052a1f6c0c352 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 28 Nov 2025 23:22:04 +0500 Subject: [PATCH 11/44] fix: add length_lit task --- 01_week/tasks/length_lit/length_lit.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/01_week/tasks/length_lit/length_lit.cpp b/01_week/tasks/length_lit/length_lit.cpp index 9fd2204b..6048477b 100644 --- a/01_week/tasks/length_lit/length_lit.cpp +++ b/01_week/tasks/length_lit/length_lit.cpp @@ -1,5 +1,6 @@ #include + constexpr long double operator"" _ft_to_m(long double v) { return static_cast(v * 0.3048L); } From 620df857aaa0d8dfa23c0602ab416b99007299bb Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 28 Nov 2025 23:24:23 +0500 Subject: [PATCH 12/44] fix: add print_bits task --- 01_week/tasks/print_bits/print_bits.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/01_week/tasks/print_bits/print_bits.cpp b/01_week/tasks/print_bits/print_bits.cpp index c74f3077..49e619dc 100644 --- a/01_week/tasks/print_bits/print_bits.cpp +++ b/01_week/tasks/print_bits/print_bits.cpp @@ -1,6 +1,7 @@ #include #include + void PrintBits(long long value, size_t bytes) { if (bytes == 0 || bytes > 8) return; From 49b333b64f8e62e4ccfafd0a9dcf25a191c9a4dc Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 28 Nov 2025 23:26:51 +0500 Subject: [PATCH 13/44] fix: add quadratic task --- 01_week/tasks/quadratic/quadratic.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/01_week/tasks/quadratic/quadratic.cpp b/01_week/tasks/quadratic/quadratic.cpp index 5c660edc..e3af78bc 100644 --- a/01_week/tasks/quadratic/quadratic.cpp +++ b/01_week/tasks/quadratic/quadratic.cpp @@ -1,6 +1,7 @@ #include #include + void SolveQuadratic(int a, int b, int c) { auto print = [](double x) { if (std::abs(x) < 1e-9) x = 0; From 2171651d08ac03ff33111442b2c985ec602093cd Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 28 Nov 2025 23:28:35 +0500 Subject: [PATCH 14/44] fix: add rms task --- 01_week/tasks/rms/rms.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/01_week/tasks/rms/rms.cpp b/01_week/tasks/rms/rms.cpp index d2851b81..1f8a5005 100644 --- a/01_week/tasks/rms/rms.cpp +++ b/01_week/tasks/rms/rms.cpp @@ -2,6 +2,7 @@ #include #include + double CalculateRMS(double values[], size_t size) { if (size == 0) return 0.0; if (values == nullptr) return 0.0; From 46982b60e9620d383074a26b3b52128e499a099d Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 28 Nov 2025 23:30:47 +0500 Subject: [PATCH 15/44] fix: add addition task --- 01_week/tasks/addition/addition.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/01_week/tasks/addition/addition.cpp b/01_week/tasks/addition/addition.cpp index 0ef148c4..0e2cb82f 100644 --- a/01_week/tasks/addition/addition.cpp +++ b/01_week/tasks/addition/addition.cpp @@ -1,5 +1,6 @@ #include + int64_t Addition(int a, int b) { return static_cast(a) + static_cast(b); From c8ec7eb8f06116bfd172d7f28ab7cc061fa268dc Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 1 Dec 2025 19:19:11 +0000 Subject: [PATCH 16/44] Auto-sync: 2025-12-01 19:19 --- .github/workflows/testing.yml | 41 +- 02_week/02_cv_ref_ptr.md | 728 ++++++++++++++++++++ 02_week/02_cv_ref_ptr.pdf | Bin 0 -> 251817 bytes 02_week/CMakeLists.txt | 17 + 02_week/examples/const_cast.cpp | 83 +++ 02_week/examples/ptr_address.cpp | 43 ++ 02_week/examples/ref.cpp | 25 + 02_week/tasks/CMakeLists.txt | 6 + 02_week/tasks/func_array/CMakeLists.txt | 1 + 02_week/tasks/func_array/README.md | 12 + 02_week/tasks/func_array/func_array.cpp | 6 + 02_week/tasks/func_array/test.cpp | 89 +++ 02_week/tasks/last_of_us/CMakeLists.txt | 1 + 02_week/tasks/last_of_us/README.md | 14 + 02_week/tasks/last_of_us/last_of_us.cpp | 6 + 02_week/tasks/last_of_us/test.cpp | 167 +++++ 02_week/tasks/little_big/CMakeLists.txt | 1 + 02_week/tasks/little_big/README.md | 23 + 02_week/tasks/little_big/little_big.cpp | 10 + 02_week/tasks/little_big/test.cpp | 145 ++++ 02_week/tasks/longest/CMakeLists.txt | 1 + 02_week/tasks/longest/README.md | 16 + 02_week/tasks/longest/longest.cpp | 6 + 02_week/tasks/longest/test.cpp | 215 ++++++ 02_week/tasks/pretty_array/CMakeLists.txt | 1 + 02_week/tasks/pretty_array/README.md | 29 + 02_week/tasks/pretty_array/pretty_array.cpp | 6 + 02_week/tasks/pretty_array/test.cpp | 158 +++++ 02_week/tasks/swap_ptr/CMakeLists.txt | 2 + 02_week/tasks/swap_ptr/README.md | 8 + 02_week/tasks/swap_ptr/swap_ptr.cpp | 6 + 02_week/tasks/swap_ptr/test.cpp | 172 +++++ grading/deadlines.json | 68 ++ 33 files changed, 2099 insertions(+), 7 deletions(-) create mode 100644 02_week/02_cv_ref_ptr.md create mode 100644 02_week/02_cv_ref_ptr.pdf create mode 100644 02_week/CMakeLists.txt create mode 100644 02_week/examples/const_cast.cpp create mode 100644 02_week/examples/ptr_address.cpp create mode 100644 02_week/examples/ref.cpp create mode 100644 02_week/tasks/CMakeLists.txt create mode 100644 02_week/tasks/func_array/CMakeLists.txt create mode 100644 02_week/tasks/func_array/README.md create mode 100644 02_week/tasks/func_array/func_array.cpp create mode 100644 02_week/tasks/func_array/test.cpp create mode 100644 02_week/tasks/last_of_us/CMakeLists.txt create mode 100644 02_week/tasks/last_of_us/README.md create mode 100644 02_week/tasks/last_of_us/last_of_us.cpp create mode 100644 02_week/tasks/last_of_us/test.cpp create mode 100644 02_week/tasks/little_big/CMakeLists.txt create mode 100644 02_week/tasks/little_big/README.md create mode 100644 02_week/tasks/little_big/little_big.cpp create mode 100644 02_week/tasks/little_big/test.cpp create mode 100644 02_week/tasks/longest/CMakeLists.txt create mode 100644 02_week/tasks/longest/README.md create mode 100644 02_week/tasks/longest/longest.cpp create mode 100644 02_week/tasks/longest/test.cpp create mode 100644 02_week/tasks/pretty_array/CMakeLists.txt create mode 100644 02_week/tasks/pretty_array/README.md create mode 100644 02_week/tasks/pretty_array/pretty_array.cpp create mode 100644 02_week/tasks/pretty_array/test.cpp create mode 100644 02_week/tasks/swap_ptr/CMakeLists.txt create mode 100644 02_week/tasks/swap_ptr/README.md create mode 100644 02_week/tasks/swap_ptr/swap_ptr.cpp create mode 100644 02_week/tasks/swap_ptr/test.cpp create mode 100644 grading/deadlines.json diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 4f8292b7..3309c63c 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -1,6 +1,6 @@ name: Testing Tasks -on: [push] +on: [push, pull_request] jobs: test: @@ -24,12 +24,21 @@ jobs: changed_files=$(git ls-files) fi - echo "Changed files: $changed_files" + echo "Changed files:" + echo "$changed_files" - tasks=("addition" "rms" "print_bits" "check_flags" "length_lit" "quadratic" "char_changer") + tasks=("addition" "rms" "print_bits" "check_flags" "length_lit" "quadratic" "char_changer" + "swap_ptr" "func_array" "longest" "last_of_us" "little_big" "pretty_array") + + declare -i passed_count=0 + declare -i failed_count=0 + declare -i task_count=0 + + echo "=== Starting tests for changed tasks ===" for task in "${tasks[@]}"; do - if echo "$changed_files" | grep -q "$task/"; then + if echo "$changed_files" | grep -q "tasks/$task/"; then + task_count+=1 echo "=== Processing $task ===" if cmake --build build --target test_$task; then @@ -37,13 +46,31 @@ jobs: if ./build/tasks/test_$task; then echo "✅ test_$task PASSED" + passed_count+=1 else echo "❌ test_$task FAILED" - exit 1 + failed_count+=1 fi else echo "❌ test_$task build FAILED" - exit 1 + failed_count+=1 fi fi - done \ No newline at end of file + done + + echo "=== Test Results Summary ===" + echo "Total tasks in list: ${#tasks[@]}" + echo "Processed: $task_count" + echo "✅ Passed: $passed_count" + echo "❌ Failed: $failed_count" + + if [ $failed_count -gt 0 ]; then + echo "❌ Some tasks failed!" + exit 1 + elif [ $task_count -eq 0 ]; then + echo "No tasks were processed (no changes)" + exit 0 + else + echo "✅ All processed tasks passed!" + exit 0 + fi \ No newline at end of file diff --git a/02_week/02_cv_ref_ptr.md b/02_week/02_cv_ref_ptr.md new file mode 100644 index 00000000..b5391afa --- /dev/null +++ b/02_week/02_cv_ref_ptr.md @@ -0,0 +1,728 @@ +# Лекция 2. CV-квалификаторы. Ссылки. Указатели + +1. [CV-квалификаторы](#cv_type_qualifiers) + - [`const`](#const) + - [`volatile`](#volatile) + - [`const volatile`](#const_volatile) + - [Оператор `const_cast`](#const_cast) +1. [Ссылка (_reference_)](#reference) + - [Оператор доступа `[]`](#ref_operator_access) + - [Ссылка на константу](#ref_const) + - [Ссылка на массив](#ref_array) + - [Итерирование по контейнеру](#ref_range_based_for) +1. [Указатель (_pointer_)](#pointer) + - [Оператор взятия адреса `&` (_address-of_)](#operator_address_of) + - [Использование амперсанда `&`](#use_ampersand) + - [Получение адреса `std::addressof()` (_C++11_)](#std_addressof) + - [Оператор разыменования `*` (_indirection_)](#operator_indirection) + - [Использование звездочки `*`](#use_asterisk) + - [Стиль кода амперсанда и звездочки](#code_style_ampersand_asterisk) + - [Совместное использование амперсанда и звездочки](#use_ampersand_asterisk) + - [Константность указателя](#ptr_const) + - [Нулевой указатель `nullptr`](#ptr_nullptr) + - [Арифметика указателей](#ptr_arithmetic) + - [Сравнение указателей](#ptr_comparison) + - [Расстояние между указателями](#ptr_distance) + - [Передача массива через указатели](#ptr_array_to_func) + - [Ссылка на указатель](#ref_to_ptr) + - [Указатель на указатель](#ptr_to_ptr) + - [Указатель на `void`](#ptr_to_void) + - [Оператор `reinterpret_cast`](#reinterpret_cast) + - [Указатель на функцию](#ptr_to_func) + - [Преобразование _function to function pointer_](#func_to_func_ptr_conversion) + - [Сложные объявления с указателями](#dificult_declaration) +1. [Передача аргументов в функцию](#pass_func_args) + - [Продление жизни ссылки на константу](#const_ref_lifetime_expansion) + - [Почему нет продления жизни не константной ссылки](#ref_no_lifetime_expansion) + - [Висячая ссылка (_dangling reference_)](#dangling_reference) + - [Невалидный указатель (_invalid pointer_)](#invalid_pointer) + + +## CV-квалификаторы + +В языке C++ существуют квалификаторы типа. + +CV означает `const` `volatile` + +Квалификаторы могут быть применены к типам переменных и методам (функциям внутри класса) + +### `const` + +Квалификатор типа отвечающий за константность. + +Означает, что объект данного типа нельзя изменять + +Если тип объявлен с данным квалификатором, то компилятор не разрешает пользователю +изменять данную сущность. Что позволяет находить ошибки в коде на этапе +компиляции (например, при попытке изменить переменную с квалификатором `const`) + +Все глобальные переменные рекомендуется объявлять константными. + +Можно написать как **ДО** типа так и **ПОСЛЕ**: + +```c++ +const int a = 0; +int const b = 0; +``` +- **НО** принято писать **ДО** типа + +Невозможно делать операции с переменной данного типа, подразумевающие изменение +(инкремент/декремент, присваивания, ...) + +### `volatile` + +Квалификатор типа отвечающий за изменчивость. + +Означает, что объект данного типа может неожиданно измениться +(из-за действий в другом потоке, по другим причинам) и его можно изменять +пользователю. + +Сообщает компилятору, что переменная видима извне, а значит не нужно оптимизировать +код, связанный с данной переменной. + +```c++ +volatile int a = 0; +int volatile b = 0; +``` + +### `const volatile` + +Можно использовать оба квалификатора. + +Означает, что объект нельзя изменять пользователю, но он может неожиданно +измениться. + +### Оператор `const_cast` + +`const_cast` - оператор приведения типа, который необходим для добавления +или удаления квалификаторов `const`, `volatile`. + +Синтаксис: `const_cast()` +- `new_type` - тип, к которому необходимо привести +- `` - выражение, результат которого необходимо привести к указанному +типу + +- Используется в _legacy_ коде, так как в языке C нет `const` +- Возможно удалить `const` с объектов, которые не были объявлены `const` +но стали константными в результате передачи в функцию. + +```c++ +void change_const_value(const int& value) { + int& mutable_value = const_cast(value); + mutable_value = 100; // только если оригинал не const +} + +int main() { + int original = 42; + std::cout << "before const_cast: " << original << std::endl; + change_const_value(original); + std::cout << "after const_cast: " << original << std::endl; +} +``` + +## Ссылка (_reference_) + +Ссылка представляет собой псевдоним для переменной. + +Ссылка позволяет использовать объект избегая копирования, ссылка не хранит значение. + +Для создания ссылки используется амперсанд `&` после имени типа. + +Синтаксис: `& = ;` +- `` - имя ссылки +- `` - имя существующей переменной + +Представляет собой новый составной тип: ссылка на тип. + +**Особенности:** + +- нельзя создать ссылку без инициализации +- ссылка может быть связанна с переменной один раз +- cсылки на ссылку не существует + +Ссылка позволяет изменять исходный объект: ` = ` + +```c++ +int x = 0; +int& y = x; +y = 1; +std::cout << x; // 1 +``` + +```c++ +int x = 0, z = 5; +int& y = x; +y = z; // change x, not change ref for y +std::cout << x; // 5 +``` + +### Оператор доступа `[]` + +Оператор `[]` возвращает ссылку на объект: + +```c++ +int arr[] = {1, 2, 3, 4, 5}; +int& value = arr[2]; +value = 0; // arr = {1, 2, 0, 4, 5} +arr[3] = 8; // arr = {1, 2, 0, 8, 5} +``` + +### Ссылка на константу + +Ссылку на константу часто называют константной ссылкой. + +При добавлении константности к ссылке, нельзя поменять переменную через ссылку + +```c++ +int x = 0; +const int& ref = x; +ref = 1; // compile error +``` + +На константную переменную может ссылаться только ссылка на константу: + +```c++ +const int value = 100; +int& ref = value; // compile error +const int& cref = value; // ok +``` + +На литерал нельзя сделать ссылку, потому что литерал это константа времени +компиляции. Но можно сделать константную ссылку на литерал, поскольку в языке +принято продление жизни константных ссылок (_lifetime expansion_) + +```c++ +int& ref = 10; // compile error +const int& cref = 10; // ok +``` +- В этот момент создается объект со значением литерала, на который создается ссылка + +### Ссылка на массив + +Ссылку на массив можно создать следующим образом: + +```c++ +int arr[10]; +int (&ref_a)[10] = arr; +int matrix[3][4]; +int (&ref_m)[3][4] = matrix; +``` +- Придется явно указать размерность. +- При передачи в функцию сохраняется воможность итерироваться по массиву в цикле +_range-based for_ + +### Итерирование по контейнеру + +Для тяжелых типов важно правильно итерироваться по контейнерам и стандартным +массивам. + +Спецификатор типа `auto` срезает тип, а именно ссылку и константность. +Поэтому его нужно уточнять с помощью `const` и `&`. + +Копирование не подходит для тяжелых объектов (`std::string` - строка C++, +может быть тяжелым объектом). + +```c++ +std::vector book_names; +// some code to fill book_names... +for (auto book_name : book_names) { + // do something... +} +``` + +Если необходимо изменять объект в цикле, то используется ссылка `auto&`. +Для тяжелых объектов позволяет избежать копирования и значительно ускорить +итерирование по контейнеру. + +```c++ +std::vector book_names; +// some code to fill book_names... +for (auto& book_name : book_names) { + // change book_names strings through ref book_name... +} +``` + +Если **НЕТ** необходимости менять объект используется `const auto&` + +```c++ +std::vector book_names; +// some code to fill book_names... +for (const auto& book_name : book_names) { + // do something without changing of book_name... +} +``` + +**ВАЖНО** для легких типов (фундаментальных, перечислений, типов до 8-16 байт), +если нет необходимости изменять объект, использовать не `const auto&`, а +копирование через `auto`. Это будет быстрее. + +```c++ +std::vector values; +// some code to fill values... +for (auto value : values) { + std::cout << value << std::endl; +} +``` + +## Указатель (_pointer_) + +Указатель это тип, который позволяет хранить адрес другого объекта в памяти. + +Синтаксис: `* =
;` +- `*` - обозначение указателя +- `` - тип объекта, на который указывает указатель +- `` - имя для указателя, иногда начинается с `ptr_` +- `
` - адрес объекта в памяти на который указывает указатель + +```c++ +int x = 0xBADC0FFE; +int* ptr_x = &x; +std::cout << x << std::endl; +std::cout << ptr_x << std::endl; +std::cout << *ptr_x << std::endl; +``` + +**Особенности:** + +- указатели могут быть не инициализированы (но так не стоит делать) +- можно поменять объект на который указывает указатель +- можно создавать указатель на указатель + +### Оператор взятия адреса `&` (_address-of_) + +- Унарный оператор, который используется перед именем сущности для взятия адреса. + +```c++ +int x = 42; +std::cout << &x << std::endl; // address-of x +const double pi = 3.1415926; +std::cout << &pi << std::endl; // address-of pi +int& y = x; +std::cout << &y << std::endl; // address-of x +``` + +### Использование амперсанда `&` + +- Символ используется в разных контекстах: + +```c++ +int x = 0; +// Побитовое И +auto y = x & 0xBADC0FFE; +// Объявление ссылки +int& ref = x; +// Взятие адреса +auto addr = &x; +``` + +### Получение адреса `std::addressof()` (_C++11_) + +В стандартной библиотеке языка C++ в заголовочном файле `` присутствует +шаблонная функция `std::addressof`, которая позволяет взять правильный адрес объекта, +даже если перегружен оператор амперсанд `&`. + +Функция возвращает указатель на тип аргумента (адрес аргумента). + +```c++ +int x = 10; +std::cout << std::addressof(x) << std::cou; +``` + +### Оператор разыменования `*` (_indirection_) + +- Унарный оператор, позволяющий по адресу получить доступ к объекту, который лежит по +данному адресу. Называется `indirection` или `dereference`. + +```c++ +int x = 0xBADC0FFE; +int* ptr_x = &x; +std::cout << *ptr_x << std::endl; // dereference ptr_x +int y = *ptr_x; // dereference ptr_x +``` + +Как правило, возвращает ссылку на объект, поэтому можно изменять значение: + +```c++ +int x = 5; +int* ptr = &x; +*ptr = 6; +std::cout << x << std::endl; // 6 +``` + +### Использование звездочки `*` + +- Символ используется в разных контекстах: + +```c++ +int x = 42; +// Умножение +auto mul = x * 42; +// Объявление указателя +int* ptr = &x; +// Разыменование указателя +auto y = *ptr; // copy +auto& ref = *ptr; // ref +``` + +### Стиль кода амперсанда и звездочки + +Это не обсуждается, используем первый вариант! + +```c++ +int* ptr = &x; +int& ref = x; +``` + +Так тоже можно: + +```c++ +int * ptr = &x; +int & ref = x; +``` + +_Legacy_ языка C: + +```c++ +int *ptr = &x; +int &ref = x; +``` + +Может пригодиться при объявлении цепочки указателей + +```c++ +int *p = nullptr, *p1 = nullptr, *p3 = nullptr; +``` +- но нормальный _style guide_ просит объявлять переменные в отдельной строке + +### Совместное использование амперсанда и звездочки + +Операторы разыменования и взятия адреса можно использовать совместно + +```c++ +int x = 0; +int& ref = *&x; // взять адрес а затем разыменовать +int* ptr = &x; +int* ptr2 = &*ptr // разыменовать, а затем взять адресс переменной +``` + +### Константность указателя + +На константную переменную **НЕ** может указывать обычный указатель: + +```c++ +const int x = 5; +int* ptr = &x; // compile error +int& ref = x; // compile error +``` +- аналогично для ссылок + +На константную переменную может указывать указатель на константу: + +```c++ +const int x = 5; +const int* ptr = &x; +const int& ref = x; +``` +- аналогично для ссылок + +Константный указатель на константную переменную: + +```c++ +const int x = 5; +const int* const ptr = &x; +``` +- нельзя менять (перевешивать на другую переменную) указатель и сами данные + +### Нулевой указатель `nullptr` + +`nullptr` - нулевой указатель, необходим для инициализации указателей, которые +никуда не указывают. + +Рассмотрим следующий пример: + +```c++ +double* ptr; +if (condition) { + ptr = &value; +} +if (ptr) { + std::cout << *ptr << std::endl; // UB because ptr has random address +} +``` + +Для правильной работы кода, необходимо инициализировать указатель значением `nullptr`: + +```c++ +double* ptr = nullptr; +``` + +### Арифметика указателей + +Над указателями можно проводит **арифметические операции** сложения и вычитание +указателя с числом, инкремент/декремент. + +Арифметика указателей приводит к смещению указателя на другой блок памяти, +поскольку указатель знает тип, на адресс объекта которого указывает, то известен +и размер шага. + +При арифметике указателей изменяется адрес, хранимый указателем на столько же +байт, сколько отведено под хранение переменной типа. + +Естественно это работает для неконстантных указателей, которые могут быть +перевешаны на другой объект. + +### Сравнение указателей + +Можно производить сравнение указателей, сравнение с `nullptr`. + +Указатель на начало массива будет меньше указателя на конец. + +Работает, в том числе, для константных указателей. + +### Расстояние между указателями + +Можно определить расстояние между двумя указателями: + +```c++ +int arr[5] = {1, 2, 3, 4, 5}; +int* begin = arr; // pointer to 1 +int* end = arr + 5; // pointer to pos after end of array +auto distance = end - begin; // 5 type is std::ptrdiff_t +``` +- `std::ptrdiff_t` - тип используемый для расстояния между указателями + +### Передача массива через указатели + +Возможно передать массив в функцию через пару указателей. + +Синтаксис функции: ` (* begin, * end)` + +Получение указателей на начало и конец: + +```c++ +int arr[5] = {1, 2, 3, 4, 5}; +int* begin = arr; // pointer to 1 +int* end = arr + 5; // pointer to pos after end of array +``` + +В заголовочном файле `` есть удобные функции для получения указателя +на начало (`std::begin()`) и конец (`std::end()`) массива. Способ более +предпочтителен для современного C++ + +```c++ +int arr[5] = {1, 2, 3, 4, 5}; +int* begin = std::begin(arr); // pointer to 1 +int* end = std::end(arr); // pointer to pos after end of array +``` + +Пример с функцией: + +```c++ +void Print(int* begin, int* end) { + for (; begin != end; ++begin) { + std::cout << *begin << std::endl; + } +} + +int main() { + int arr[5] = {1, 2, 3, 4, 5}; + int* begin = std::begin(arr); // pointer to 1 + int* end = std::end(arr); // pointer to pos after end of array + Print(begin, end); + Print(std::begin(arrv), std::end(arr)); +} +``` + +### Ссылка на указатель + +Можно объявить ещё одно имя для указателя посредством ссылки: + +```c++ +int x = 0; +int* ptr = &x; +int*& ptr2 = ptr; +``` + +### Указатель на указатель + +Можно получить указатель на указатель. Нужно помнить, что каждая вложенность +указателя увеличивает уровень косвенности (не прямого обращения), что может +замедлять работу с исходным объектом под указателем. + +```c++ +int x; +int* ptr = &x; // pointer to int +int** pptr = &ptr; // pointer to pointer to int +int* const* npptr = &ptr; // non-const pointer to const pointer to int +``` + +Поскольку в языке есть преобразование `array to pointer`, то функцию `main` +с аргументами можно записать двумя способами: + +- `int main(int argc, char* argv[]) {}` +- `int main(int argc, char** argv) {}` + +### Указатель на `void` + +Указатель на void — это указатель общего назначения, который может хранить адрес +объекта любого типа, но не имеет информации о типе этого объекта. + +Синтаксис: `void* ;` + +Особенности: +- Может указывать на данные любого типа +- **НЕ** может быть разыменован напрямую +- **НЕ** поддерживает арифметику указателей +- Требует явного приведения для использования + +### Оператор `reinterpret_cast` + +- `reinterpret_cast` - это оператор приведения, который интерпретирует +битовое представление объекта одного типа как битовое представление объекта +другого типа. + +Синтаксис: `reinterpret_cast()` +- `new_type` - тип в который преобразовать +- `` - выражение, результат которого необходимо преобразовать + +Не выполняет никаких преобразований. + +Позволяет считать битовое представление числа в памяти: + +```c++ +int number = 0x12345678; +int* ptr_int = &number; +char* ptr_char = reinterpret_cast(ptr_int); + +std::cout << "original int = " << std::hex << number << std::endl; +std::cout << "reinterpret as bytes = "; +for (int i = 0; i < sizeof(int); ++i) { + std::cout << std::hex << static_cast(char_ptr[i]) << " "; +} +std::cout << std::endl; +``` + +### Указатель на функцию + +Указатель на функцию — это переменная, которая хранит адрес функции, а не данных. + +Позволяет: +- Передавать функции как аргументы в другие функции +- Создавать массивы функций +- Реализовывать стратегии и `callback` вызов функции + +Синтаксис объявление указателя на функцию: ` (*)();` +- `` - возвращаемое значение функции +- `` - имя указателя +- `` - типы аргументов функции + +### Преобразование _function to function pointer_ + +В языке присутствует стандартное преобразование функции в указатель на функцию. +Поэтому там, где требуется указатель на функцию не обязательно передавать +адрес функции, можно просто передать имя функции. + +### Сложные объявления с указателями + +Ниже приведены примеры сложных объявлений с участием указателей: + +```c++ +int* arr[10]; // array with 10 int* elements +int (*ptr_arr)[10]; // pointer to array with 10 int elements +void (*ptr_func)(int) // pointer to function with type void(int) +void (*arr_ptr_func[10])(int) // array with 10 elements of pointer to function with type void(int) +void (*(*arr_ptr_func_r_ptr_func[10])(int))(int) +``` + +## Передача аргументов в функцию + +Передача по значению, копируем объект: + +```c++ +int func(std::string s); +``` + +Передача по ссылке, не копируем объект, можем изменять существующий: + +```c++ +int func(std::string& s); +``` + +Передача по константной ссылке, не копируем объект, нельзя изменять существующий: + +```c++ +int func(const std::string& s); +``` + +Передача по указателю, не копируем объект, можем изменять существующий: + +```c++ +int func(std::string* s); +``` + +Передача по указателю на константу, не копируем объект, нельзя изменять существующий: + +```c++ +int func(const std::string* s); +``` + +### Продление жизни ссылки на константу + +Синтаксис: `const & ref = ` + +- Константная ссылка создает себе объект и становится его именем + +Константные ссылки можно инициализировать через **_rvalue_** (_lifetime expansion_) + +### Почему нет продления жизни не константной ссылки + +```c++ +void func(size_t& counter) { + ++counter; +} + +int main() { + int x = 0; + func(x); + std::cout << x << std::endl; +} +``` + +### Висячая ссылка (_dangling reference_) + +В C++ не запрещено возвращать ссылку на локальную переменную, но поскольку +по выходу из функции локальная переменная уничтожается, то ссылка становится +висячей (битой) и обращение к ней приведет к UB необратимым последствиям:) + +```c++ +int& func(int& value) { + int x = 5; + return x; +} + +int main() { + int value = 5; + int& x = func(value); + std::cout << x << std::endl; // UB +} +``` + +Компилятор может выдавать предупреждение, это зависит от версии. + +### Невалидный указатель (_invalid pointer_) + +Нельзя разыменовывать указатель, который указывает на память, уже +не принадлежащую объекту. Шучу, это же C++ разыменовать можно, но +программа скорей всего упадет, так как разыменование невалидного +указателя это **UB**! + +```c++ +int main() { + int* ptr = nullptr; + { + int x = 42; + ptr = &x; + } + std::cout << *ptr << std::endl; // UB +} +``` diff --git a/02_week/02_cv_ref_ptr.pdf b/02_week/02_cv_ref_ptr.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3c98566071d8479e0c86114713d014d2c02da19b GIT binary patch literal 251817 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 + +void _change_const_value(const int& value) { + int& mutable_value = const_cast(value); + mutable_value = 100; +} + +void change_const_value() { + std::cout << __func__ << ':' << std::endl; + int value = 42; + std::cout << "before const_cast: " << value << std::endl; + _change_const_value(value); + std::cout << "after const_cast: " << value << std::endl; + std::cout << std::endl; + + std::cout << "UB: " << std::endl; + const int cvalue = 42; + std::cout << "before const_cast: " << cvalue << std::endl; + _change_const_value(cvalue); // UB + std::cout << "after const_cast: " << cvalue << std::endl; + std::cout << std::endl; +} + +void dangerous_example_ref() { + std::cout << __func__ << ':' << std::endl; + const int truly_const = 42; + std::cout << "before const_cast: " << truly_const << std::endl; + + int& ref = const_cast(truly_const); // UB + ref = 100; + + std::cout << "after const_cast: " << truly_const << std::endl; // maybe 42 + std::cout << "ref: " << ref << std::endl; // maybe 100 + + std::cout << "&truly_const: " << &truly_const << std::endl; + std::cout << "&ref: " << &ref << std::endl; + std::cout << std::endl; +} + +void const_cast_pointers() { + std::cout << __func__ << ':' << std::endl; + int value = 100; + const int* const_ptr = &value; + std::cout << "value before modification: " << value << std::endl; + + int* mutable_ptr = const_cast(const_ptr); // const_cast + *mutable_ptr = 200; + std::cout << "value after modification: " << value << std::endl; + std::cout << std::endl; + + const int* new_const_ptr = const_cast(mutable_ptr); + // *new_const_ptr = 300; // compile error + + std::cout << "UB: " << std::endl; + const int cvalue = 100; + std::cout << "value before modification: " << cvalue << std::endl; + const int* ptr = &cvalue; + int* cmutable_ptr = const_cast(ptr); + *cmutable_ptr = 200; + std::cout << "value after modification: " << cvalue << std::endl; + std::cout << std::endl; +} + +void dangerous_example_ptr() { + std::cout << __func__ << ':' << std::endl; + const int cvalue = 100; + const int* ptr = &cvalue; + int* mutable_ptr = const_cast(ptr); + *mutable_ptr = 200; + + std::cout << "value before modification: " << cvalue << std::endl; + std::cout << "value after modification: " << cvalue << std::endl; + std::cout << "ptr: " << ptr << std::endl; + std::cout << "mutable_ptr: " << mutable_ptr << std::endl; + std::cout << std::endl; +} + +int main() { + change_const_value(); + dangerous_example_ref(); + const_cast_pointers(); + dangerous_example_ptr(); +} \ No newline at end of file diff --git a/02_week/examples/ptr_address.cpp b/02_week/examples/ptr_address.cpp new file mode 100644 index 00000000..f5103fdc --- /dev/null +++ b/02_week/examples/ptr_address.cpp @@ -0,0 +1,43 @@ +#include + +// compile with clang++ and g++ +void ptr_address() { + std::cout << __func__ << ':' << std::endl; + int x = 0; + int y = 1; + std::cout << "&x: " << &x << '\n' << "&y: " << &y << std::endl; + + int* ptr_x = &x; + std::cout << "sizeof(int*): " << sizeof(ptr_x) << '\n' + << "ptr_x: " << ptr_x << '\n' + << "&ptr_x: " << &ptr_x << std::endl; + + int* ptr_y = &y; + std::cout << "sizeof(int*): " << sizeof(ptr_y) << '\n' + << "ptr_y: " << ptr_y << '\n' + << "&ptr_y: " << &ptr_y << std::endl; + + int z = 2; + std::cout << "&z: " << &z << std::endl; + std::cout << std::endl; +} + +void ptr_type() { + std::cout << __func__ << ':' << std::endl; + int x = 0; + int* ptr_x = &x; + std::cout << "type for int*: " << typeid(ptr_x).name() << std::endl; + + double y = 0; + double* ptr_y = &y; + std::cout << "type for double*: " << typeid(ptr_y).name() << std::endl; + + int** ptr_ptr_x = &ptr_x; + std::cout << "type for int**: " << typeid(ptr_ptr_x).name() << std::endl; + std::cout << std::endl; +} + +int main() { + ptr_address(); + ptr_type(); +} \ No newline at end of file diff --git a/02_week/examples/ref.cpp b/02_week/examples/ref.cpp new file mode 100644 index 00000000..7f666029 --- /dev/null +++ b/02_week/examples/ref.cpp @@ -0,0 +1,25 @@ +#include + +void ref_changes() { + std::cout << __func__ << ':' << std::endl; + int x = 0; + std::cout << "x = " << x << std::endl; // 0 + + int& y = x; + std::cout << "y = " << y << std::endl; // 0 + y = 1; + std::cout << "after y = 1:" << std::endl; + std::cout << "x = " << x << std::endl; // 1 + std::cout << "y = " << y << std::endl; // 1 + + int z = 5; + y = z; // change x, not change ref for y + std::cout << "after y = z:" << std::endl; + std::cout << "x = " << x << std::endl; // 5 + std::cout << "y = " << y << std::endl; // 5 + std::cout << std::endl; +} + +int main() { + ref_changes(); +} \ No newline at end of file diff --git a/02_week/tasks/CMakeLists.txt b/02_week/tasks/CMakeLists.txt new file mode 100644 index 00000000..d0361ea1 --- /dev/null +++ b/02_week/tasks/CMakeLists.txt @@ -0,0 +1,6 @@ +add_subdirectory(swap_ptr) +add_subdirectory(func_array) +add_subdirectory(longest) +add_subdirectory(last_of_us) +add_subdirectory(little_big) +add_subdirectory(pretty_array) \ No newline at end of file diff --git a/02_week/tasks/func_array/CMakeLists.txt b/02_week/tasks/func_array/CMakeLists.txt new file mode 100644 index 00000000..5627ab73 --- /dev/null +++ b/02_week/tasks/func_array/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_func_array test.cpp) \ No newline at end of file diff --git a/02_week/tasks/func_array/README.md b/02_week/tasks/func_array/README.md new file mode 100644 index 00000000..be31788b --- /dev/null +++ b/02_week/tasks/func_array/README.md @@ -0,0 +1,12 @@ +# Массив функций + +Необходимо написать функцию `ApllyOperations`, которая будет принимать +два вещественных числа типа `double`, массив функций математических операций +с типом `double`, размер массива функций, и возвращать сумму результатов +выполненных операций. + +## Примечание + +- Запрещено использовать STL алгоритмы (только чистые циклы) и контейнеры. +- В случае пустого массива операций возвращать 0.0. +- Функции операций не должны модифицировать исходные числа. diff --git a/02_week/tasks/func_array/func_array.cpp b/02_week/tasks/func_array/func_array.cpp new file mode 100644 index 00000000..b327e68d --- /dev/null +++ b/02_week/tasks/func_array/func_array.cpp @@ -0,0 +1,6 @@ +#include + + +double ApplyOperations(double a, double b /* other arguments */) { + throw std::runtime_error{"Not implemented"}; +} \ No newline at end of file diff --git a/02_week/tasks/func_array/test.cpp b/02_week/tasks/func_array/test.cpp new file mode 100644 index 00000000..7fad5714 --- /dev/null +++ b/02_week/tasks/func_array/test.cpp @@ -0,0 +1,89 @@ +#include + +#include + +#include "func_array.cpp" + + +double Add(double a, double b) { + return a + b; +} + +double Subtract(double a, double b) { + return a - b; +} + +double Multiply(double a, double b) { + return a * b; +} + +double Divide(double a, double b) { + return a / b; +} + +double SquareSum(double a, double b) { + return a * a + b * b; +} + +double Max(double a, double b) { + return a > b ? a : b; +} + +double Min(double a, double b) { + return a < b ? a : b; +} + +using FuncTypeTest = double (*)(double, double); + +TEST(MathOperationsTest, BasicOperations) { + std::vector ops{Add, Subtract, Multiply, Divide}; + double a = 10.0, b = 5.0; + double result = ApplyOperations(a, b, ops.data(), ops.size()); + EXPECT_DOUBLE_EQ(result, 72.0); +} + +TEST(MathOperationsTest, SingleOperation) { + std::vector ops{Multiply}; + double a = 8.0, b = 2.0; + double result = ApplyOperations(a, b, ops.data(), ops.size()); + EXPECT_DOUBLE_EQ(result, 16.0); +} + +TEST(MathOperationsTest, EmptyOperationsArray) { + double a = 10.0, b = 5.0; + double result = ApplyOperations(a, b, nullptr, 0); + EXPECT_DOUBLE_EQ(result, 0.0); + + std::vector ops; + result = ApplyOperations(a, b, ops.data(), 0); + EXPECT_DOUBLE_EQ(result, 0.0); +} + +TEST(MathOperationsTest, WithPowerOperation) { + std::vector ops{Add, SquareSum, Multiply}; + double a = 2.0, b = 3.0; + double result = ApplyOperations(a, b, ops.data(), ops.size()); + EXPECT_DOUBLE_EQ(result, 24.0); +} + +TEST(MathOperationsTest, NegativeNumbers) { + std::vector ops{Add, Multiply}; + double a = -5.0, b = 3.0; + double result = ApplyOperations(a, b, ops.data(), ops.size()); + EXPECT_DOUBLE_EQ(result, -17.0); +} + +TEST(MathOperationsTest, CustomOperations) { + auto Average = [](double a, double b) { return (a + b) / 2.0; }; + std::vector ops{SquareSum, Average}; + double a = 3.0, b = 4.0; + double result = ApplyOperations(a, b, ops.data(), ops.size()); + EXPECT_DOUBLE_EQ(result, 28.5); +} + +TEST(MathOperationsTest, ArrayWithNullptr) { + std::vector ops{Add, nullptr, Multiply, nullptr}; + double a = 10.0, b = 2.0; + double result = ApplyOperations(a, b, ops.data(), ops.size()); + EXPECT_DOUBLE_EQ(result, 32.0); +} diff --git a/02_week/tasks/last_of_us/CMakeLists.txt b/02_week/tasks/last_of_us/CMakeLists.txt new file mode 100644 index 00000000..ea0d05fa --- /dev/null +++ b/02_week/tasks/last_of_us/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_last_of_us test.cpp) \ No newline at end of file diff --git a/02_week/tasks/last_of_us/README.md b/02_week/tasks/last_of_us/README.md new file mode 100644 index 00000000..56fee4ec --- /dev/null +++ b/02_week/tasks/last_of_us/README.md @@ -0,0 +1,14 @@ +# Найти последний элемент удовлетворяющий условию + +Необходимо написать функцию `FindLastElement`, которая находит последний +элемент, удовлетворяющий условию функции предиката. Функция принимает два +указателя на начало и конец целочисленного массива, а также указатель на +функцию предикат, и возвращает указатель на найденный элемент. Если элемент +не найден, то возвращается указатель за последний элемент. + +Указатели соответствуют диапазону $[begin, end)$. + +## Примечание + +- Если передан некорректный диапазон или некорректный указатель, то + возвращается указатель `end` diff --git a/02_week/tasks/last_of_us/last_of_us.cpp b/02_week/tasks/last_of_us/last_of_us.cpp new file mode 100644 index 00000000..c7bf1a25 --- /dev/null +++ b/02_week/tasks/last_of_us/last_of_us.cpp @@ -0,0 +1,6 @@ +#include + + +/* return_type */ FindLastElement(/* ptr_type */ begin, /* ptr_type */ end, /* func_type */ predicate) { + throw std::runtime_error{"Not implemented"}; +} \ No newline at end of file diff --git a/02_week/tasks/last_of_us/test.cpp b/02_week/tasks/last_of_us/test.cpp new file mode 100644 index 00000000..6a20ff0a --- /dev/null +++ b/02_week/tasks/last_of_us/test.cpp @@ -0,0 +1,167 @@ +#include + +#include "last_of_us.cpp" + +#include +#include +#include + +bool IsPositive(int x) { + return x > 0; +} + +bool IsNegative(int x) { + return x < 0; +} + +bool IsEven(int x) { + return x % 2 == 0; +} + +bool IsOdd(int x) { + return x % 2 != 0; +} + +class FindLastElementTest : public ::testing::Test { +protected: + void SetUp() override { + test_array_ = {1, -2, 3, -4, 5, -6, 7, -8, 9, -10}; + empty_array_ = {}; + single_element_ = {42}; + mixed_array_ = {2, 4, 6, 8, 10, 1, 3, 5, 7, 9}; + palindromes_ = {121, 1331, 12321, 45654, 1, 22, 333}; + } + + std::vector test_array_; + std::vector empty_array_; + std::vector single_element_; + std::vector mixed_array_; + std::vector palindromes_; +}; + +TEST_F(FindLastElementTest, BasicPositiveNumbers) { + const int* result = FindLastElement(test_array_.data(), test_array_.data() + test_array_.size(), IsPositive); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(*result, 9); + EXPECT_EQ(result, test_array_.data() + 8); +} + +TEST_F(FindLastElementTest, BasicNegativeNumbers) { + const int* result = FindLastElement(test_array_.data(), test_array_.data() + test_array_.size(), IsNegative); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(*result, -10); + EXPECT_EQ(result, test_array_.data() + 9); +} + +TEST_F(FindLastElementTest, BasicNotFound) { + const int* result = FindLastElement(test_array_.data(), test_array_.data() + test_array_.size(), + [](int value) { return value > 10; }); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(result, test_array_.data() + test_array_.size()); +} + +TEST_F(FindLastElementTest, BasicFirstElement) { + const int* result = FindLastElement(test_array_.data(), test_array_.data() + test_array_.size(), + [](int value) { return value == 1; }); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(result, test_array_.data()); + EXPECT_EQ(*result, 1); +} + +TEST_F(FindLastElementTest, EmptyArray) { + const int* result = FindLastElement(empty_array_.data(), empty_array_.data(), IsPositive); + EXPECT_EQ(result, empty_array_.data()); +} + +TEST_F(FindLastElementTest, SingleElementPositive) { + const int* result = FindLastElement(single_element_.data(), single_element_.data() + 1, IsPositive); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(*result, 42); +} + +TEST_F(FindLastElementTest, SingleElementNotFound) { + const int* result = FindLastElement(single_element_.data(), single_element_.data() + 1, IsNegative); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(result, single_element_.data() + 1); +} + +TEST_F(FindLastElementTest, EvenNumbers) { + const int* result = FindLastElement(mixed_array_.data(), mixed_array_.data() + mixed_array_.size(), IsEven); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(*result, 10); + EXPECT_EQ(result, mixed_array_.data() + 4); +} + +TEST_F(FindLastElementTest, OddNumbers) { + const int* result = FindLastElement(mixed_array_.data(), mixed_array_.data() + mixed_array_.size(), IsOdd); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(*result, 9); + EXPECT_EQ(result, mixed_array_.data() + 9); +} + +TEST_F(FindLastElementTest, InRange) { + const int* result = FindLastElement(mixed_array_.data(), mixed_array_.data() + mixed_array_.size(), + [](int value) { return value >= 0 && value <= 2; }); + ASSERT_NE(result, nullptr); + EXPECT_EQ(*result, 1); + EXPECT_EQ(result, mixed_array_.data() + 5); +} + +TEST_F(FindLastElementTest, InvalidPointers) { + const int* result = FindLastElement(nullptr, test_array_.data() + 5, IsPositive); + EXPECT_EQ(result, test_array_.data() + 5); + + result = FindLastElement(test_array_.data(), nullptr, IsPositive); + EXPECT_EQ(result, nullptr); + + result = FindLastElement(nullptr, nullptr, IsPositive); + EXPECT_EQ(result, nullptr); + + result = FindLastElement(test_array_.data() + 5, test_array_.data(), IsPositive); + EXPECT_EQ(result, test_array_.data()); +} + +TEST_F(FindLastElementTest, RandomArray) { + std::vector random_array(100); + std::random_device rd; + std::mt19937 gen(rd()); + std::uniform_int_distribution<> dist(-100, 100); + + for (int& val : random_array) { + val = dist(gen); + } + + const int* expected = nullptr; + for (size_t i = 0; i < random_array.size(); ++i) { + if (random_array[i] > 0) { + expected = random_array.data() + i; + } + } + + const int* result = FindLastElement(random_array.data(), random_array.data() + random_array.size(), IsPositive); + + if (expected == nullptr) { + EXPECT_EQ(result, nullptr); + } else { + ASSERT_NE(result, nullptr); + EXPECT_EQ(result, expected); + EXPECT_EQ(*result, *expected); + } +} + +TEST_F(FindLastElementTest, ConstCorrectness) { + const std::vector const_array = {1, 2, 3, 4, 5}; + const int* result = FindLastElement(const_array.data(), const_array.data() + const_array.size(), IsEven); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(*result, 4); + EXPECT_EQ(result, const_array.data() + 3); +} \ No newline at end of file diff --git a/02_week/tasks/little_big/CMakeLists.txt b/02_week/tasks/little_big/CMakeLists.txt new file mode 100644 index 00000000..51939457 --- /dev/null +++ b/02_week/tasks/little_big/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_little_big test.cpp) \ No newline at end of file diff --git a/02_week/tasks/little_big/README.md b/02_week/tasks/little_big/README.md new file mode 100644 index 00000000..28b9851c --- /dev/null +++ b/02_week/tasks/little_big/README.md @@ -0,0 +1,23 @@ +[представление числа double]: https://en.wikipedia.org/wiki/Double-precision_floating-point_format +[порядок байт (little-endian и big-endian)]: https://en.wikipedia.org/wiki/Endianness + +# Представление числа в памяти + +Необходимо написать функцию `PrintMemory`, которая будет печатать битовое +представление числа в памяти. Функция выводит на экран битовое представление +числа в шестнадцатеричном формате `0xYYYY` соответствующей размерности. + +В конце вывода необходим перевод строки. + +Одна версия функции должна принимать должна принимать число типа `int`, +другая `double`. Вторым аргументом функция принимает флаг, который +инвертирует порядок байт, по умолчанию порядок не инвертируется. + +## Ограничения + +- Запрещено использовать С-style cast и специализированные контейнеры. + +## Примечание + +- Прочитать про [представление числа double] +- Прочитать про [порядок байт (little-endian и big-endian)] \ No newline at end of file diff --git a/02_week/tasks/little_big/little_big.cpp b/02_week/tasks/little_big/little_big.cpp new file mode 100644 index 00000000..abe24379 --- /dev/null +++ b/02_week/tasks/little_big/little_big.cpp @@ -0,0 +1,10 @@ +#include + + +void PrintMemory(int /* write arguments here */) { + throw std::runtime_error{"Not implemented"}; +} + +void PrintMemory(double /* write arguments here */) { + throw std::runtime_error{"Not implemented"}; +} \ No newline at end of file diff --git a/02_week/tasks/little_big/test.cpp b/02_week/tasks/little_big/test.cpp new file mode 100644 index 00000000..008a54b0 --- /dev/null +++ b/02_week/tasks/little_big/test.cpp @@ -0,0 +1,145 @@ +#include + +#include +#include +#include +#include +#include + +#include "little_big.cpp" + + +class PrintMemoryTest : public ::testing::Test { +protected: + void SetUp() override { + origin_cout = std::cout.rdbuf(buffer.rdbuf()); + } + + void TearDown() override { + std::cout.rdbuf(origin_cout); + } + + std::string GetOutput() { + return buffer.str(); + } + + std::stringstream buffer; + std::streambuf* origin_cout; +}; + +TEST(FunctionSignatureTest, IntSignature) { + static_assert(std::is_same_v(&PrintMemory)), void (*)(int, bool)>, + "function must have signature: void PrintMemory(int, bool)"); +} + +TEST(FunctionSignatureTest, DoubleSignature) { + static_assert(std::is_same_v(&PrintMemory)), void (*)(double, bool)>, + "function must have signature: void PrintMemory(double, bool)"); +} + +TEST_F(PrintMemoryTest, IntZero) { + PrintMemory(0); + std::string output = GetOutput(); + EXPECT_EQ(output, "0x00000000\n"); +} + +TEST_F(PrintMemoryTest, IntNegative) { + PrintMemory(-1); + std::string output = GetOutput(); + EXPECT_EQ(output, "0xFFFFFFFF\n"); +} + +TEST_F(PrintMemoryTest, IntHex) { + { + PrintMemory(0x12345678); + std::string output = GetOutput(); + EXPECT_EQ(output, "0x78563412\n"); + } + buffer.str(""); + { + PrintMemory(static_cast(0x89ABCDEF)); + std::string output = GetOutput(); + EXPECT_EQ(output, "0xEFCDAB89\n"); + } +} + +TEST_F(PrintMemoryTest, IntReverseChecks) { + { + PrintMemory(0x12345678, true); + std::string output = GetOutput(); + EXPECT_EQ(output, "0x12345678\n"); + } + buffer.str(""); + { + PrintMemory(0x12345678, false); + std::string output = GetOutput(); + EXPECT_EQ(output, "0x78563412\n"); + } +} + +TEST_F(PrintMemoryTest, BothFunctionsWork) { + PrintMemory(42); + std::string int_output = GetOutput(); + + buffer.str(""); + + PrintMemory(42.0); + std::string double_output = GetOutput(); + + EXPECT_NE(int_output, double_output); +} + +TEST_F(PrintMemoryTest, DoubleZero) { + PrintMemory(0.0); + std::string output = GetOutput(); + EXPECT_EQ(output, "0x0000000000000000\n"); +} + +TEST_F(PrintMemoryTest, DoublePositive) { + PrintMemory(36.6); + std::string output = GetOutput(); + EXPECT_EQ(output, "0xCDCCCCCCCC4C424\n"); +} + +TEST_F(PrintMemoryTest, DoubleNegative) { + PrintMemory(-42.0); + std::string output = GetOutput(); + EXPECT_EQ(output, "0x00000000000045C0\n"); +} + +TEST_F(PrintMemoryTest, DoubleExponent) { + PrintMemory(-1.6513e47); + std::string output = GetOutput(); + EXPECT_EQ(output, "0x6DD2606FAFECBCC9\n"); +} + +std::string GetReverse(const std::string& str) { + std::string result = str; + for (int i = str.size() - 2, j = 2; i > 1; i-=2, j+=2) { + result[j] = str[i - 1]; + result[j + 1] = str[i]; + } + return result; +} + +TEST_F(PrintMemoryTest, DoubleReverseChecks) { + { + PrintMemory(3.123456e37, true); + std::string output = GetOutput(); + std::string r_output = GetReverse(output); + buffer.str(""); + PrintMemory(3.123456e37, false); + output = GetOutput(); + EXPECT_EQ(r_output, output); + } + buffer.str(""); + { + PrintMemory(3.123456e-37, true); + std::string output = GetOutput(); + std::string r_output = GetReverse(output); + buffer.str(""); + PrintMemory(3.123456e-37, false); + output = GetOutput(); + EXPECT_EQ(r_output, output); + } +} diff --git a/02_week/tasks/longest/CMakeLists.txt b/02_week/tasks/longest/CMakeLists.txt new file mode 100644 index 00000000..1862930c --- /dev/null +++ b/02_week/tasks/longest/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_longest test.cpp) \ No newline at end of file diff --git a/02_week/tasks/longest/README.md b/02_week/tasks/longest/README.md new file mode 100644 index 00000000..7666e7c4 --- /dev/null +++ b/02_week/tasks/longest/README.md @@ -0,0 +1,16 @@ +# Найти наибольшую подпоследовательность + +Необходимо написать функцию `FindLongestSubsequence`, которая находит +подпоследовательность наибольшей длины. Функция принимает два +указателя на начало и конец массива символов, и возвращает указатель +на начало самой длинной подпоследовательности. Длина подпоследовательности +возвращается через третий аргумент функции. + +Указатели соответствуют диапазону $[begin, end)$. + +## Примечание + +- Если передан некорректный диапазон или некорректный указатель, то + возвращается нулевой указатель. +- Если подпоследовательностей одинаковой длины несколько, то возвращается + первая \ No newline at end of file diff --git a/02_week/tasks/longest/longest.cpp b/02_week/tasks/longest/longest.cpp new file mode 100644 index 00000000..04b3c354 --- /dev/null +++ b/02_week/tasks/longest/longest.cpp @@ -0,0 +1,6 @@ +#include + + +/* return_type */ FindLongestSubsequence(/* ptr_type */ begin, /* ptr_type */ end, /* type */ count) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/02_week/tasks/longest/test.cpp b/02_week/tasks/longest/test.cpp new file mode 100644 index 00000000..4bed4cba --- /dev/null +++ b/02_week/tasks/longest/test.cpp @@ -0,0 +1,215 @@ +#include + +#include "longest.cpp" + +#include +#include +#include + + +TEST(LongestSubsequenceTest, BasicString) { + std::string str = "aaabbbccc"; + size_t count = 0; + + const char* result = FindLongestSubsequence(str.data(), str.data() + str.size(), count); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(count, 3); + EXPECT_EQ(*result, 'a'); + EXPECT_EQ(result, str.data()); +} + +TEST(LongestSubsequenceTest, BasicStringNotFirst) { + std::string str = "abbbccddde"; + size_t count = 0; + + const char* result = FindLongestSubsequence(str.data(), str.data() + str.size(), count); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(count, 3); + EXPECT_EQ(*result, 'b'); + EXPECT_EQ(result, str.data() + 1); +} + +TEST(LongestSubsequenceTest, AllSameCharacters) { + std::string str = "aaaaa"; + size_t count = 0; + + const char* result = FindLongestSubsequence(str.data(), str.data() + str.size(), count); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(count, 5); + EXPECT_EQ(*result, 'a'); + EXPECT_EQ(result, str.data()); +} + +TEST(LongestSubsequenceTest, AllDifferentCharacters) { + std::string str = "abcde"; + size_t count = 0; + + const char* result = FindLongestSubsequence(str.data(), str.data() + str.size(), count); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(count, 1); + EXPECT_EQ(*result, 'a'); + EXPECT_EQ(result, str.data()); +} + +TEST(LongestSubsequenceTest, MultipleEqualSequences) { + std::string str = "aabbbaacccaa"; + size_t count = 0; + + const char* result = FindLongestSubsequence(str.data(), str.data() + str.size(), count); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(count, 3); + EXPECT_EQ(result, str.data() + 2); + EXPECT_EQ(*result, 'b'); +} + +TEST(LongestSubsequenceTest, BinaryString) { + std::string str = "1110001111"; + size_t count = 0; + + const char* result = FindLongestSubsequence(str.data(), str.data() + str.size(), count); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(count, 4); + EXPECT_EQ(*result, '1'); + EXPECT_EQ(result, str.data() + 6); +} + +TEST(LongestSubsequenceTest, EmptyString) { + std::string str = ""; + size_t count = 100; + + const char* result = FindLongestSubsequence(str.data(), str.data() + str.size(), count); + + EXPECT_EQ(result, nullptr); + EXPECT_EQ(count, 0); +} + +TEST(LongestSubsequenceTest, SingleCharacter) { + std::string str = "a"; + size_t count = 0; + + const char* result = FindLongestSubsequence(str.data(), str.data() + str.size(), count); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(count, 1); + EXPECT_EQ(*result, 'a'); + EXPECT_EQ(result, str.data()); +} + +TEST(LongestSubsequenceTest, WithSpaces) { + std::string str = "a bb ccc"; + size_t count = 0; + + const char* result = FindLongestSubsequence(str.data(), str.data() + str.size(), count); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(count, 3); + EXPECT_EQ(*result, ' '); + EXPECT_EQ(result, str.data() + 5); +} + +TEST(LongestSubsequenceTest, MixedCase) { + std::string str = "AbBBAaAACCCcDD"; + size_t count = 0; + + const char* result = FindLongestSubsequence(str.data(), str.data() + str.size(), count); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(count, 3); + EXPECT_EQ(*result, 'C'); + EXPECT_EQ(result, str.data() + 8); +} + +TEST(LongestSubsequenceTest, InvalidPointers) { + std::string str = "test"; + size_t count = 10; + + const char* result = FindLongestSubsequence(nullptr, str.data() + str.size(), count); + EXPECT_EQ(result, nullptr); + EXPECT_EQ(count, 0); + + result = FindLongestSubsequence(str.data(), nullptr, count); + EXPECT_EQ(result, nullptr); + EXPECT_EQ(count, 0); + + result = FindLongestSubsequence(str.data() + 2, str.data(), count); + EXPECT_EQ(result, nullptr); + EXPECT_EQ(count, 0); +} + +TEST(LongestSubsequenceTest, MutableString) { + std::string str = "aaabbbccc"; + size_t count = 0; + + char* result = FindLongestSubsequence(str.data(), str.data() + str.size(), count); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(count, 3); + EXPECT_EQ(*result, 'a'); + + result[0] = 'X'; + result[1] = 'X'; + result[2] = 'X'; + EXPECT_EQ(str, "XXXbbbccc"); +} + +TEST(LongestSubsequenceTest, LongString) { + std::string str; + str.append(10, 'a'); + str.append(5, 'b'); + str.append(15, 'c'); + str.append(8, 'd'); + str.append(12, 'e'); + + size_t count = 0; + const char* result = FindLongestSubsequence(str.data(), str.data() + str.size(), count); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(count, 15); + EXPECT_EQ(*result, 'c'); + EXPECT_EQ(result, str.data() + 15); +} + +TEST(LongestSubsequenceTest, ConstCorrectnes) { + const std::string str = "aaabbbccc"; + size_t count = 0; + + const char* result = FindLongestSubsequence(str.data(), str.data() + str.size(), count); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(count, 3); + EXPECT_EQ(*result, 'a'); +} + +TEST(LongestSubsequenceTest, MixedTwoCharSequence) { + std::string str = "xyxxyxyy"; + size_t count = 0; + + const char* result = FindLongestSubsequence(str.data(), str.data() + str.size(), count); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(count, 2); // "xxxx" в начале + EXPECT_EQ(*result, 'x'); + EXPECT_EQ(result, str.data() + 2); +} + +TEST(LongestSubsequenceTest, VeryLongSequence) { + const size_t LENGTH = 1000; + std::string str(LENGTH, 'z'); // 1000 символов 'z' + + str.insert(0, "ab"); + str.append("cd"); + + size_t count = 0; + const char* result = FindLongestSubsequence(str.data(), str.data() + str.size(), count); + + ASSERT_NE(result, nullptr); + EXPECT_EQ(count, LENGTH); + EXPECT_EQ(*result, 'z'); + EXPECT_EQ(result, str.data() + 2); +} \ No newline at end of file diff --git a/02_week/tasks/pretty_array/CMakeLists.txt b/02_week/tasks/pretty_array/CMakeLists.txt new file mode 100644 index 00000000..bc1e58cf --- /dev/null +++ b/02_week/tasks/pretty_array/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_pretty_array test.cpp) \ No newline at end of file diff --git a/02_week/tasks/pretty_array/README.md b/02_week/tasks/pretty_array/README.md new file mode 100644 index 00000000..bdc095b4 --- /dev/null +++ b/02_week/tasks/pretty_array/README.md @@ -0,0 +1,29 @@ +# Форматированный вывод массива + +Необходимо написать функцию `PrintArray`, которая принимает два указателя +`begin`, `end` на начало и за конец целочисленного массива +($arr \in [begin, end)$) и выводит на экран элементы массива внутри +квадратных скобок `[]` через запятую. + +В конце вывода необходим перевод строки. + +Кроме того, функция принимает ограничитель длины элементов в одной строке. +Ограничитель по умолчанию имеет значение 0, что означает нет ограничения. + +Если количество элементов больше ограничителя, то в конце строки после +последнего элемента, ставится запятая и через пробел троеточие, +а новая строка начинается с отступа в один пробел. + +Если указатель на `end` меньше указателя на `begin` то это значит что +массив выводится в обратном порядке + +Для массива `{1, 2, 3, 4, 5}`: +- вывод без ограничителя: +``` +[1, 2, 3, 4, 5] +``` +- вывод с ограничителем 3: +``` +[1, 2, 3, ... + 4, 5] +``` \ No newline at end of file diff --git a/02_week/tasks/pretty_array/pretty_array.cpp b/02_week/tasks/pretty_array/pretty_array.cpp new file mode 100644 index 00000000..48eab341 --- /dev/null +++ b/02_week/tasks/pretty_array/pretty_array.cpp @@ -0,0 +1,6 @@ +#include + + +void PrintArray(/* write arguments here */) { + throw std::runtime_error{"Not implemented"}; +} \ No newline at end of file diff --git a/02_week/tasks/pretty_array/test.cpp b/02_week/tasks/pretty_array/test.cpp new file mode 100644 index 00000000..93cfe013 --- /dev/null +++ b/02_week/tasks/pretty_array/test.cpp @@ -0,0 +1,158 @@ +#include + +#include +#include +#include +#include +#include + +#include "pretty_array.cpp" + + +class PrintArrayTest : public ::testing::Test { +protected: + void SetUp() override { + origin_cout = std::cout.rdbuf(buffer.rdbuf()); + } + + void TearDown() override { + std::cout.rdbuf(origin_cout); + } + + std::string GetOutput() { + return buffer.str(); + } + + std::stringstream buffer; + std::streambuf* origin_cout; +}; + +TEST(FunctionSignatureTest, IntSignature) { + static_assert(std::is_same_v(&PrintMemory)), void (*)(int, bool)>, + "function must have signature: void PrintMemory(int, bool)"); +} + +TEST(FunctionSignatureTest, DoubleSignature) { + static_assert(std::is_same_v(&PrintMemory)), void (*)(double, bool)>, + "function must have signature: void PrintMemory(double, bool)"); +} + +TEST_F(PrintArrayTest, EmptyArray) { + int arr[] = {1}; + PrintArray(arr, arr); + EXPECT_EQ(GetOutput(), "[]\n"); +} + +TEST_F(PrintArrayTest, Nullptr) { + PrintArray(nullptr, nullptr); + EXPECT_EQ(GetOutput(), "[]\n"); +} + +TEST_F(PrintArrayTest, SingleElement) { + int arr[] = {42}; + PrintArray(arr, arr + 1); + EXPECT_EQ(GetOutput(), "[42]\n"); +} + +TEST_F(PrintArrayTest, BasicArrayNoLimit) { + int arr[] = {1, 2, 3, 4, 5}; + PrintArray(arr, arr + 5); + EXPECT_EQ(GetOutput(), "[1, 2, 3, 4, 5]\n"); +} + +TEST_F(PrintArrayTest, PartialArray) { + int arr[] = {1, 2, 3, 4, 5}; + PrintArray(arr + 1, arr + 4); + EXPECT_EQ(GetOutput(), "[2, 3, 4]\n"); +} + +TEST_F(PrintArrayTest, ArrayWithLimitExact) { + int arr[] = {1, 2, 3, 4, 5, 6}; + PrintArray(arr, arr + 6, 3); + std::string expected = "[1, 2, 3, ...\n 4, 5, 6]\n"; + EXPECT_EQ(GetOutput(), expected); +} + +TEST_F(PrintArrayTest, ArrayWithLimitPartialLastLine) { + int arr[] = {1, 2, 3, 4, 5}; + PrintArray(arr, arr + 5, 3); + std::string expected = "[1, 2, 3, ...\n 4, 5]\n"; + EXPECT_EQ(GetOutput(), expected); +} + +TEST_F(PrintArrayTest, ArrayWithLimitMultipleLines) { + int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; + PrintArray(arr, arr + 9, 2); + std::string expected = "[1, 2, ...\n 3, 4, ...\n 5, 6, ...\n 7, 8, ...\n 9]\n"; + EXPECT_EQ(GetOutput(), expected); +} + +TEST_F(PrintArrayTest, ArrayWithLimitMultipleLinesAndOneElement) { + int arr[] = {1, 2, 3, 4, 5}; + PrintArray(arr, arr + 5, 1); + std::string expected = "[1, ...\n 2, ...\n 3, ...\n 4, ...\n 5]\n"; + EXPECT_EQ(GetOutput(), expected); +} + +TEST_F(PrintArrayTest, ArrayWithExplicitNoLimit) { + int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; + PrintArray(arr, arr + 9, 0); + std::string expected = "[1, 2, 3, 4, 5, 6, 7, 8, 9]\n"; + EXPECT_EQ(GetOutput(), expected); +} + +TEST_F(PrintArrayTest, LimitLargerThanArray) { + int arr[] = {1, 2, 3}; + PrintArray(arr, arr + 3, 5); + EXPECT_EQ(GetOutput(), "[1, 2, 3]\n"); +} + +TEST_F(PrintArrayTest, LimitEqualToArraySize) { + int arr[] = {1, 2, 3}; + PrintArray(arr, arr + 3, 3); + EXPECT_EQ(GetOutput(), "[1, 2, 3]\n"); +} + +TEST_F(PrintArrayTest, ReverseRange) { + int arr[] = {1, 2, 3}; + PrintArray(arr + 2, arr - 1); + EXPECT_EQ(GetOutput(), "[3, 2, 1]\n"); +} + +TEST_F(PrintArrayTest, ReverseRangeWithLimit) { + int arr[] = {1, 2, 3, 4, 5}; + PrintArray(arr + 4, arr - 1, 3); + EXPECT_EQ(GetOutput(), "[5, 4, 3, ...\n 2, 1]\n"); +} + +TEST_F(PrintArrayTest, WorkWithConstArray) { + const int arr[] = {1, 2, 3, 4, 5}; + PrintArray(arr, arr + 5); + EXPECT_EQ(GetOutput(), "[1, 2, 3, 4, 5]\n"); +} + +size_t CountSubstring(const std::string& str, const std::string& substr) { + size_t count = 0; + size_t pos = 0; + while ((pos = str.find(substr, pos)) != std::string::npos) { + ++count; + pos += substr.length(); + } + return count; +} + +TEST_F(PrintArrayTest, LargeArrayWithLimit) { + const int SIZE = 100; + int arr[SIZE]; + for (int i = 0; i < SIZE; ++i) { + arr[i] = i + 1; + } + size_t limit = 17; + PrintArray(arr, arr + SIZE, limit); + std::string output = GetOutput(); + + size_t expected_newlines = limit ? (SIZE + limit - 1) / limit : 1; + size_t expected_dots = expected_newlines - 1; + EXPECT_EQ(CountSubstring(output,"..."), expected_dots); + EXPECT_EQ(CountSubstring(output,"\n"), expected_newlines); +} diff --git a/02_week/tasks/swap_ptr/CMakeLists.txt b/02_week/tasks/swap_ptr/CMakeLists.txt new file mode 100644 index 00000000..b319a5c0 --- /dev/null +++ b/02_week/tasks/swap_ptr/CMakeLists.txt @@ -0,0 +1,2 @@ +add_gtest(test_swap_ptr test.cpp) +file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/swap_ptr.cpp DESTINATION ${CMAKE_BINARY_TASKS_DIR}) \ No newline at end of file diff --git a/02_week/tasks/swap_ptr/README.md b/02_week/tasks/swap_ptr/README.md new file mode 100644 index 00000000..548ce1c9 --- /dev/null +++ b/02_week/tasks/swap_ptr/README.md @@ -0,0 +1,8 @@ +# Обмен указателей + +Необходимо написать функцию `SwapPtr`, которая меняет местами два указателя +на тип `int`. + +## Ограничения + +- Нельзя использовать `std::swap` из стандартной библиотеки \ No newline at end of file diff --git a/02_week/tasks/swap_ptr/swap_ptr.cpp b/02_week/tasks/swap_ptr/swap_ptr.cpp new file mode 100644 index 00000000..93db625d --- /dev/null +++ b/02_week/tasks/swap_ptr/swap_ptr.cpp @@ -0,0 +1,6 @@ +#include + + +void SwapPtr(/* write arguments here */) { + throw std::runtime_error{"Not implemented"}; +} \ No newline at end of file diff --git a/02_week/tasks/swap_ptr/test.cpp b/02_week/tasks/swap_ptr/test.cpp new file mode 100644 index 00000000..793df03d --- /dev/null +++ b/02_week/tasks/swap_ptr/test.cpp @@ -0,0 +1,172 @@ +#include + +#include +#include + +#include "swap_ptr.cpp" + +namespace fs = std::filesystem; + +fs::path FindSourceCode() { + std::vector search_paths = { + "02_week/tasks/swap_ptr/swap_ptr.cpp", + "tasks/swap_ptr/swap_ptr.cpp", + "swap_ptr/swap_ptr.cpp", + "swap_ptr.cpp", + "tasks/swap_ptr.cpp" + }; + + for (const auto& path : search_paths) { + if (fs::exists(path) && fs::is_regular_file(path)) { + return fs::absolute(path); + } + } + + return {}; +} + +TEST(CodeInspectionTest, NoBitsetInCode) { + fs::path code_path = FindSourceCode(); + std::ifstream file(code_path); + std::string content((std::istreambuf_iterator(file)), + std::istreambuf_iterator()); + ASSERT_TRUE(content.size()) << "Run the test from the root of repository\n"; + size_t pos = content.find("swap"); + EXPECT_EQ(pos, std::string::npos) + << "Обнаружено использование swap в коде! " << pos; +} + +TEST(SwapPtrTest, SwapIntPointers) { + int a = 10, b = 20; + int* ptr1 = &a; + int* ptr2 = &b; + + EXPECT_EQ(ptr1, &a); + EXPECT_EQ(ptr2, &b); + EXPECT_EQ(*ptr1, 10); + EXPECT_EQ(*ptr2, 20); + + SwapPointers(ptr1, ptr2); + + EXPECT_EQ(ptr1, &b); + EXPECT_EQ(ptr2, &a); + EXPECT_EQ(*ptr1, 20); + EXPECT_EQ(*ptr2, 10); +} + +TEST(SwapPtrTest, SwapIntPointersTwice) { + int a = 10, b = 20; + int* ptr1 = &a; + int* ptr2 = &b; + + EXPECT_EQ(ptr1, &a); + EXPECT_EQ(ptr2, &b); + EXPECT_EQ(*ptr1, 10); + EXPECT_EQ(*ptr2, 20); + + SwapPointers(ptr1, ptr2); + SwapPointers(ptr1, ptr2); + + EXPECT_EQ(ptr1, &a); + EXPECT_EQ(ptr2, &b); + EXPECT_EQ(*ptr1, 10); + EXPECT_EQ(*ptr2, 20); +} + +TEST(SwapPtrTest, SwapWithNullptr) { + int value = 42; + int* ptr1 = &value; + int* ptr2 = nullptr; + + SwapPointers(ptr1, ptr2); + + EXPECT_EQ(ptr1, nullptr); + EXPECT_EQ(ptr2, &value); + EXPECT_EQ(*ptr2, 42); +} + +TEST(SwapPtrTest, SwapBothNullptr) { + int* ptr1 = nullptr; + int* ptr2 = nullptr; + + SwapPointers(ptr1, ptr2); + + EXPECT_EQ(ptr1, nullptr); + EXPECT_EQ(ptr2, nullptr); +} + +TEST(SwapPtrTest, SwapPointersToSameObject) { + int value = 123; + int* ptr1 = &value; + int* ptr2 = &value; + + SwapPointers(ptr1, ptr2); + + EXPECT_EQ(ptr1, &value); + EXPECT_EQ(ptr2, &value); + EXPECT_EQ(*ptr1, 123); + EXPECT_EQ(*ptr2, 123); +} + +TEST(SwapPtrTest, SwapArrayPointers) { + int arr1[] = {1, 2, 3}; + int arr2[] = {4, 5, 6}; + int* ptr1 = arr1; + int* ptr2 = arr2; + + SwapPointers(ptr1, ptr2); + + EXPECT_EQ(ptr1, arr2); + EXPECT_EQ(ptr2, arr1); + + EXPECT_EQ(ptr1[0], 4); + EXPECT_EQ(ptr1[1], 5); + EXPECT_EQ(ptr1[2], 6); + EXPECT_EQ(ptr2[0], 1); + EXPECT_EQ(ptr2[1], 2); + EXPECT_EQ(ptr2[2], 3); +} + +TEST(SwapPtrTest, SwapConstPointers) { + int a = 10, b = 20; + const int* ptr1 = &a; + const int* ptr2 = &b; + + SwapPointers(ptr1, ptr2); + + EXPECT_EQ(ptr1, &b); + EXPECT_EQ(ptr2, &a); + EXPECT_EQ(*ptr1, 20); + EXPECT_EQ(*ptr2, 10); +} + +TEST(SwapPtrTest, SwapPointerToPointer) { + int a = 100, b = 200; + int* ptr1 = &a; + int* ptr2 = &b; + int** pptr1 = &ptr1; + int** pptr2 = &ptr2; + + SwapPointers(pptr1, pptr2); + + EXPECT_EQ(pptr1, &ptr2); + EXPECT_EQ(pptr2, &ptr1); + EXPECT_EQ(ptr1, &a); + EXPECT_EQ(ptr2, &b); + EXPECT_EQ(**pptr1, a); + EXPECT_EQ(**pptr2, b); +} + +TEST(SwapPtrTest, VerifyValuesNotChanged) { + int a = 10, b = 20; + int* ptr1 = &a; + int* ptr2 = &b; + + SwapPointers(ptr1, ptr2); + + EXPECT_EQ(a, 10); + EXPECT_EQ(b, 20); + + EXPECT_EQ(*ptr1, 20); + EXPECT_EQ(*ptr2, 10); +} diff --git a/grading/deadlines.json b/grading/deadlines.json new file mode 100644 index 00000000..7c07c7e8 --- /dev/null +++ b/grading/deadlines.json @@ -0,0 +1,68 @@ +{ + "addition": { + "max_score": 100, + "deadline": "2025-12-31 23:59", + "description": "Сложение чисел" + }, + "rms": { + "max_score": 100, + "deadline": "2025-11-28 23:59", + "description": "Вычисление RMS" + }, + "print_bits": { + "max_score": 100, + "deadline": "2025-11-28 23:59", + "description": "Битовое представление числа" + }, + "check_flags": { + "max_score": 100, + "deadline": "2025-11-28 23:59", + "description": "Флаги битовой маски" + }, + "length_lit": { + "max_score": 100, + "deadline": "2025-11-28 23:59", + "description": "Пользовательские литералы длины" + }, + "quadratic": { + "max_score": 200, + "deadline": "2025-11-28 23:59", + "description": "Решение квадратного уравнения" + }, + "char_changer": { + "max_score": 300, + "deadline": "2025-11-28 23:59", + "description": "Изменение символов" + }, + + "swap_ptr": { + "max_score": 100, + "deadline": "2025-12-09 23:59", + "description": "Обмен указателей" + }, + "func_array": { + "max_score": 100, + "deadline": "2025-12-09 23:59", + "description": "Массив функций" + }, + "longest": { + "max_score": 200, + "deadline": "2025-12-09 23:59", + "description": "Найти самую длинную подпоследовательность" + }, + "last_of_us": { + "max_score": 200, + "deadline": "2025-12-09 23:59", + "description": "Найти последний элемент удовлетворяющий условию" + }, + "little_big": { + "max_score": 200, + "deadline": "2025-12-09 23:59", + "description": "Представление числа в памяти" + }, + "pretty_array": { + "max_score": 200, + "deadline": "2025-12-09 23:59", + "description": "Форматированный вывод массива" + } +} \ No newline at end of file From a7f167e848085b121b5da85c82c63d7a3b88f6dc Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Tue, 2 Dec 2025 09:46:00 +0000 Subject: [PATCH 17/44] Auto-sync: 2025-12-02 09:46 --- 02_week/CMakeLists.txt | 3 +++ 02_week/examples/ptr_access.cpp | 19 +++++++++++++++++++ 02_week/examples/ptr_arithmetic.cpp | 24 ++++++++++++++++++++++++ 02_week/examples/reinterpret.cpp | 21 +++++++++++++++++++++ 02_week/tasks/swap_ptr/test.cpp | 26 +++++++++++++------------- 5 files changed, 80 insertions(+), 13 deletions(-) create mode 100644 02_week/examples/ptr_access.cpp create mode 100644 02_week/examples/ptr_arithmetic.cpp create mode 100644 02_week/examples/reinterpret.cpp diff --git a/02_week/CMakeLists.txt b/02_week/CMakeLists.txt index c1d29c4d..625e6fbe 100644 --- a/02_week/CMakeLists.txt +++ b/02_week/CMakeLists.txt @@ -14,4 +14,7 @@ if (BUILD_EXAMPLES_02_WEEK) add_example(const_cast ${EXAMPLES_DIR}/const_cast.cpp) add_example(ref ${EXAMPLES_DIR}/ref.cpp) add_example(ptr_address ${EXAMPLES_DIR}/ptr_address.cpp) + add_example(ptr_access ${EXAMPLES_DIR}/ptr_access.cpp) + add_example(ptr_arithmetic ${EXAMPLES_DIR}/ptr_arithmetic.cpp) + add_example(reinterpret ${EXAMPLES_DIR}/reinterpret.cpp) endif() \ No newline at end of file diff --git a/02_week/examples/ptr_access.cpp b/02_week/examples/ptr_access.cpp new file mode 100644 index 00000000..7c529784 --- /dev/null +++ b/02_week/examples/ptr_access.cpp @@ -0,0 +1,19 @@ +#include + + +void ptr_access() { + std::cout << __func__ << ':' << std::endl; + int abc = 0xBADC0FEE; + std::cout << abc << std::endl; + int* ptr_abc = &abc; + std::cout << "address-of abc = " << &abc << std::endl; + std::cout << "ptr_abc = " << ptr_abc << std::endl; + std::cout << "access using [0] = " << ptr_abc[0] << std::endl; + std::cout << "access using * = " << *ptr_abc << std::endl; + std::cout << "address-of ptr_abc = " << &ptr_abc << std::endl; + std::cout << std::endl; +} + +int main() { + ptr_access(); +} \ No newline at end of file diff --git a/02_week/examples/ptr_arithmetic.cpp b/02_week/examples/ptr_arithmetic.cpp new file mode 100644 index 00000000..f3ca7803 --- /dev/null +++ b/02_week/examples/ptr_arithmetic.cpp @@ -0,0 +1,24 @@ +#include + + +void ptr_arithmetic() { + std::cout << __func__ << ':' << std::endl; + int arr[5] = {1, 2, 3, 4, 5}; + int* begin = arr; // pointer to 1 + std::cout << *begin << std::endl; + std::cout << begin[1] << std::endl; + std::cout << begin << std::endl; + std::cout << ++begin << std::endl; + std::cout << *(++begin) << std::endl; + std::cout << begin[0] << std::endl; + std::cout << *(begin + 2) << std::endl; + int* end = arr + 5; // pointer to pos after end of array + auto distance = end - begin; // type is std::ptrdiff_t + std::cout << distance << std::endl; + std::cout << std::endl; +} + +int main() { + ptr_arithmetic(); +} + diff --git a/02_week/examples/reinterpret.cpp b/02_week/examples/reinterpret.cpp new file mode 100644 index 00000000..1d95544a --- /dev/null +++ b/02_week/examples/reinterpret.cpp @@ -0,0 +1,21 @@ +#include + + +void reinterpret() { + std::cout << __func__ << ':' << std::endl; + int number = 0x12345678; + int* ptr_int = &number; + char* ptr_char = reinterpret_cast(ptr_int); + + std::cout << "original int = " << std::hex << number << std::endl; + std::cout << "reinterpret as bytes = "; + for (int i = 0; i < sizeof(int); ++i) { + std::cout << std::hex << static_cast(ptr_char[i]) << " "; + } + std::cout << std::endl; + std::cout << std::endl; +} + +int main() { + reinterpret(); +} \ No newline at end of file diff --git a/02_week/tasks/swap_ptr/test.cpp b/02_week/tasks/swap_ptr/test.cpp index 793df03d..08fa95e9 100644 --- a/02_week/tasks/swap_ptr/test.cpp +++ b/02_week/tasks/swap_ptr/test.cpp @@ -46,7 +46,7 @@ TEST(SwapPtrTest, SwapIntPointers) { EXPECT_EQ(*ptr1, 10); EXPECT_EQ(*ptr2, 20); - SwapPointers(ptr1, ptr2); + SwapPtr(ptr1, ptr2); EXPECT_EQ(ptr1, &b); EXPECT_EQ(ptr2, &a); @@ -64,8 +64,8 @@ TEST(SwapPtrTest, SwapIntPointersTwice) { EXPECT_EQ(*ptr1, 10); EXPECT_EQ(*ptr2, 20); - SwapPointers(ptr1, ptr2); - SwapPointers(ptr1, ptr2); + SwapPtr(ptr1, ptr2); + SwapPtr(ptr1, ptr2); EXPECT_EQ(ptr1, &a); EXPECT_EQ(ptr2, &b); @@ -78,7 +78,7 @@ TEST(SwapPtrTest, SwapWithNullptr) { int* ptr1 = &value; int* ptr2 = nullptr; - SwapPointers(ptr1, ptr2); + SwapPtr(ptr1, ptr2); EXPECT_EQ(ptr1, nullptr); EXPECT_EQ(ptr2, &value); @@ -89,18 +89,18 @@ TEST(SwapPtrTest, SwapBothNullptr) { int* ptr1 = nullptr; int* ptr2 = nullptr; - SwapPointers(ptr1, ptr2); + SwapPtr(ptr1, ptr2); EXPECT_EQ(ptr1, nullptr); EXPECT_EQ(ptr2, nullptr); } -TEST(SwapPtrTest, SwapPointersToSameObject) { +TEST(SwapPtrTest, SwapPtrToSameObject) { int value = 123; int* ptr1 = &value; int* ptr2 = &value; - SwapPointers(ptr1, ptr2); + SwapPtr(ptr1, ptr2); EXPECT_EQ(ptr1, &value); EXPECT_EQ(ptr2, &value); @@ -114,7 +114,7 @@ TEST(SwapPtrTest, SwapArrayPointers) { int* ptr1 = arr1; int* ptr2 = arr2; - SwapPointers(ptr1, ptr2); + SwapPtr(ptr1, ptr2); EXPECT_EQ(ptr1, arr2); EXPECT_EQ(ptr2, arr1); @@ -132,7 +132,7 @@ TEST(SwapPtrTest, SwapConstPointers) { const int* ptr1 = &a; const int* ptr2 = &b; - SwapPointers(ptr1, ptr2); + SwapPtr(ptr1, ptr2); EXPECT_EQ(ptr1, &b); EXPECT_EQ(ptr2, &a); @@ -147,14 +147,14 @@ TEST(SwapPtrTest, SwapPointerToPointer) { int** pptr1 = &ptr1; int** pptr2 = &ptr2; - SwapPointers(pptr1, pptr2); + SwapPtr(pptr1, pptr2); EXPECT_EQ(pptr1, &ptr2); EXPECT_EQ(pptr2, &ptr1); EXPECT_EQ(ptr1, &a); EXPECT_EQ(ptr2, &b); - EXPECT_EQ(**pptr1, a); - EXPECT_EQ(**pptr2, b); + EXPECT_EQ(**pptr1, b); + EXPECT_EQ(**pptr2, a); } TEST(SwapPtrTest, VerifyValuesNotChanged) { @@ -162,7 +162,7 @@ TEST(SwapPtrTest, VerifyValuesNotChanged) { int* ptr1 = &a; int* ptr2 = &b; - SwapPointers(ptr1, ptr2); + SwapPtr(ptr1, ptr2); EXPECT_EQ(a, 10); EXPECT_EQ(b, 20); From 2e8f4d931dd228315be9a058039b01f730d2879e Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 3 Dec 2025 07:00:02 +0000 Subject: [PATCH 18/44] Auto-sync: 2025-12-03 07:00 --- 02_week/tasks/pretty_array/test.cpp | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/02_week/tasks/pretty_array/test.cpp b/02_week/tasks/pretty_array/test.cpp index 93cfe013..3224871a 100644 --- a/02_week/tasks/pretty_array/test.cpp +++ b/02_week/tasks/pretty_array/test.cpp @@ -27,16 +27,6 @@ class PrintArrayTest : public ::testing::Test { std::streambuf* origin_cout; }; -TEST(FunctionSignatureTest, IntSignature) { - static_assert(std::is_same_v(&PrintMemory)), void (*)(int, bool)>, - "function must have signature: void PrintMemory(int, bool)"); -} - -TEST(FunctionSignatureTest, DoubleSignature) { - static_assert(std::is_same_v(&PrintMemory)), void (*)(double, bool)>, - "function must have signature: void PrintMemory(double, bool)"); -} - TEST_F(PrintArrayTest, EmptyArray) { int arr[] = {1}; PrintArray(arr, arr); From a67e355a1f9230fa428a1cef1fa667ac4cb14fad Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 3 Dec 2025 12:28:24 +0000 Subject: [PATCH 19/44] Auto-sync: 2025-12-03 12:28 --- 02_week/tasks/little_big/test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02_week/tasks/little_big/test.cpp b/02_week/tasks/little_big/test.cpp index 008a54b0..bd40bc24 100644 --- a/02_week/tasks/little_big/test.cpp +++ b/02_week/tasks/little_big/test.cpp @@ -98,7 +98,7 @@ TEST_F(PrintMemoryTest, DoubleZero) { TEST_F(PrintMemoryTest, DoublePositive) { PrintMemory(36.6); std::string output = GetOutput(); - EXPECT_EQ(output, "0xCDCCCCCCCC4C424\n"); + EXPECT_EQ(output, "0xCDCCCCCCCC4C4240\n"); } TEST_F(PrintMemoryTest, DoubleNegative) { From bd129ad659e2df2bdf6e4d7abf090df44801d7d7 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Tue, 9 Dec 2025 21:16:46 +0500 Subject: [PATCH 20/44] func_array --- 02_week/tasks/func_array/func_array.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/02_week/tasks/func_array/func_array.cpp b/02_week/tasks/func_array/func_array.cpp index b327e68d..19f83a79 100644 --- a/02_week/tasks/func_array/func_array.cpp +++ b/02_week/tasks/func_array/func_array.cpp @@ -1,6 +1,12 @@ -#include +#include - -double ApplyOperations(double a, double b /* other arguments */) { - throw std::runtime_error{"Not implemented"}; -} \ No newline at end of file +double ApplyOperations(double a, double b, double (*operations[])(double, double), size_t size) { + if (size == 0 || operations == nullptr) { + return 0.0;} + double sum = 0.0; + for (size_t i = 0; i < size; ++i) { + if (operations[i] != nullptr) { + sum += operations[i](a, b); + } } + return sum; +} From 0c30f210818072d744db8a2e4d27456c6dfcdc09 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Tue, 9 Dec 2025 21:31:21 +0500 Subject: [PATCH 21/44] last of us --- 02_week/tasks/last_of_us/last_of_us.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/02_week/tasks/last_of_us/last_of_us.cpp b/02_week/tasks/last_of_us/last_of_us.cpp index c7bf1a25..878edc6b 100644 --- a/02_week/tasks/last_of_us/last_of_us.cpp +++ b/02_week/tasks/last_of_us/last_of_us.cpp @@ -1,6 +1,12 @@ #include - -/* return_type */ FindLastElement(/* ptr_type */ begin, /* ptr_type */ end, /* func_type */ predicate) { - throw std::runtime_error{"Not implemented"}; -} \ No newline at end of file +const int* FindLastElement(const int* begin, const int* end, bool (*predicate)(int)) { + if (!begin || !end || begin > end) { + return end;} + const int* result = end; + for (const int* ptr = begin; ptr < end; ++ptr) { + if (predicate(*ptr)) { + result = ptr;} + } + return result; +} From edfd91a3af4c34663e009cf778e01bf7ade3faa3 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Tue, 9 Dec 2025 21:41:05 +0500 Subject: [PATCH 22/44] little big --- 02_week/tasks/little_big/little_big.cpp | 34 +++++++++++++++++++++---- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/02_week/tasks/little_big/little_big.cpp b/02_week/tasks/little_big/little_big.cpp index abe24379..f0eab9ad 100644 --- a/02_week/tasks/little_big/little_big.cpp +++ b/02_week/tasks/little_big/little_big.cpp @@ -1,10 +1,34 @@ +#include +#include #include +void PrintMemory(int value, bool reverse = false) {// Для int + unsigned char* bytes = reinterpret_cast(&value); + std::cout << "0x" << std::uppercase; + if (reverse) { + for (size_t i = sizeof(int); i > 0; --i) { + std::cout << std::hex << std::setw(2) << std::setfill('0') + << static_cast(bytes[i - 1]); } + } else { + for (size_t i = 0; i < sizeof(int); ++i) { + std::cout << std::hex << std::setw(2) << std::setfill('0') + << static_cast(bytes[i]); } + } + std::cout << std::dec << std::endl; +} -void PrintMemory(int /* write arguments here */) { - throw std::runtime_error{"Not implemented"}; +void PrintMemory(double value, bool reverse = false) {// Для double + unsigned char* bytes = reinterpret_cast(&value); + std::cout << "0x" << std::uppercase; + if (reverse) { + for (size_t i = sizeof(double); i > 0; --i) { + std::cout << std::hex << std::setw(2) << std::setfill('0') + << static_cast(bytes[i - 1]); } + } else { + for (size_t i = 0; i < sizeof(double); ++i) { + std::cout << std::hex << std::setw(2) << std::setfill('0') + << static_cast(bytes[i]); } + } + std::cout << std::dec << std::endl; } -void PrintMemory(double /* write arguments here */) { - throw std::runtime_error{"Not implemented"}; -} \ No newline at end of file From 7450931fb6d1b008fc6b282a808e07d0c4857192 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Tue, 9 Dec 2025 22:23:20 +0500 Subject: [PATCH 23/44] longer --- 02_week/tasks/longest/longest.cpp | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/02_week/tasks/longest/longest.cpp b/02_week/tasks/longest/longest.cpp index 04b3c354..124b5cda 100644 --- a/02_week/tasks/longest/longest.cpp +++ b/02_week/tasks/longest/longest.cpp @@ -1,6 +1,32 @@ +#include #include +char* FindLongestSubsequence(char* begin, char* end, size_t& count) { + if (!begin || !end || begin >= end) { + count = 0; + return nullptr; } + char* max_start = begin; + size_t max_len = 1; + char* current_start = begin; + size_t current_len = 1; + for (char* ptr = begin + 1; ptr < end; ++ptr) { + if (*ptr == *(ptr - 1)) { + ++current_len;} + else { + if (current_len > max_len) { + max_len = current_len; + max_start = current_start; + } + current_start = ptr; + current_len = 1;} + } + if (current_len > max_len) { + max_len = current_len; + max_start = current_start;} + count = max_len; + return max_start; +} -/* return_type */ FindLongestSubsequence(/* ptr_type */ begin, /* ptr_type */ end, /* type */ count) { - throw std::runtime_error{"Not implemented"}; +const char* FindLongestSubsequence(const char* begin, const char* end, size_t& count) { //из за ошибки про то, что ожидается изменяемый массив + return FindLongestSubsequence(const_cast(begin), const_cast(end), count); } From 319b6f3d03e7b1df1bb9a34f6befd29e7b43502c Mon Sep 17 00:00:00 2001 From: karskanovas Date: Tue, 9 Dec 2025 22:50:41 +0500 Subject: [PATCH 24/44] pretty_array --- 02_week/tasks/pretty_array/pretty_array.cpp | 39 ++++++++++++++++++--- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/02_week/tasks/pretty_array/pretty_array.cpp b/02_week/tasks/pretty_array/pretty_array.cpp index 48eab341..5ef7596b 100644 --- a/02_week/tasks/pretty_array/pretty_array.cpp +++ b/02_week/tasks/pretty_array/pretty_array.cpp @@ -1,6 +1,35 @@ -#include +#include +#include - -void PrintArray(/* write arguments here */) { - throw std::runtime_error{"Not implemented"}; -} \ No newline at end of file +void PrintArray(const int* begin, const int* end, size_t line_limit = 0) { + std::cout << "["; + if (!begin || !end || begin == end) { + std::cout << "]\n"; + return; } + size_t count = 0; + bool first = true; + if (begin < end) { + for (const int* it = begin; it != end; ++it) { + if (!first) std::cout << ", "; + std::cout << *it; + ++count; + first = false; + bool is_last = (it + 1 == end); + if (line_limit > 0 && count == line_limit && !is_last) { + std::cout << ", ...\n "; + count = 0; + first = true; } + }} else { + for (const int* it = begin; it != end; --it) { + if (!first) std::cout << ", "; + std::cout << *it; + ++count; + first = false; + bool is_last = (it - 1 == end - 1); + if (line_limit > 0 && count == line_limit && !is_last) { + std::cout << ", ...\n "; + count = 0; + first = true;}} + } + std::cout << "]\n"; +} From 5e9f0cfec3e8dbe67cae16f004ba223380947c02 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Tue, 9 Dec 2025 23:13:14 +0500 Subject: [PATCH 25/44] swap_ptr --- 02_week/tasks/swap_ptr/swap_ptr.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/02_week/tasks/swap_ptr/swap_ptr.cpp b/02_week/tasks/swap_ptr/swap_ptr.cpp index 93db625d..538688f8 100644 --- a/02_week/tasks/swap_ptr/swap_ptr.cpp +++ b/02_week/tasks/swap_ptr/swap_ptr.cpp @@ -1,6 +1,14 @@ #include - -void SwapPtr(/* write arguments here */) { - throw std::runtime_error{"Not implemented"}; -} \ No newline at end of file +void SwapPtr(int*& a, int*& b) { + int* temp = a; + a = b; + b = temp;} +void SwapPtr(const int*& a, const int*& b) {//const int* + const int* temp = a; + a = b; + b = temp;} +void SwapPtr(int**& a, int**& b) { //int + int** temp = a; + a = b; + b = temp;} \ No newline at end of file From ed641e9974d4a2f06275fa791a82cb8c46e0fcf4 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Thu, 18 Dec 2025 19:20:36 +0500 Subject: [PATCH 26/44] Merge upstream/main --- .github/workflows/testing.yml | 5 +- .github/workflows/testing_week_01.yml | 95 ++ .github/workflows/testing_week_02.yml | 94 ++ .github/workflows/testing_week_03.yml | 100 ++ 01_week/01_basic_cpp.md | 2 +- 03_week/03_data_structures.md | 916 ++++++++++++++++++ 03_week/03_data_structures.pdf | Bin 0 -> 308213 bytes 03_week/CMakeLists.txt | 17 + 03_week/examples/struct_examples.cpp | 172 ++++ 03_week/examples/union_examples.cpp | 117 +++ 03_week/examples/vector_examples.cpp | 89 ++ 03_week/tasks/CMakeLists.txt | 9 + 03_week/tasks/data_stats/CMakeLists.txt | 1 + 03_week/tasks/data_stats/README.md | 13 + 03_week/tasks/data_stats/data_stats.cpp | 11 + 03_week/tasks/data_stats/test.cpp | 80 ++ 03_week/tasks/easy_compare/CMakeLists.txt | 1 + 03_week/tasks/easy_compare/README.md | 25 + 03_week/tasks/easy_compare/easy_compare.cpp | 16 + 03_week/tasks/easy_compare/test.cpp | 269 +++++ 03_week/tasks/enum_operators/CMakeLists.txt | 1 + 03_week/tasks/enum_operators/README.md | 19 + .../tasks/enum_operators/enum_operators.cpp | 33 + 03_week/tasks/enum_operators/test.cpp | 226 +++++ 03_week/tasks/filter/CMakeLists.txt | 1 + 03_week/tasks/filter/README.md | 11 + 03_week/tasks/filter/filter.cpp | 6 + 03_week/tasks/filter/test.cpp | 172 ++++ 03_week/tasks/find_all/CMakeLists.txt | 1 + 03_week/tasks/find_all/README.md | 9 + 03_week/tasks/find_all/find_all.cpp | 6 + 03_week/tasks/find_all/test.cpp | 119 +++ 03_week/tasks/minmax/CMakeLists.txt | 1 + 03_week/tasks/minmax/README.md | 14 + 03_week/tasks/minmax/minmax.cpp | 6 + 03_week/tasks/minmax/test.cpp | 141 +++ 03_week/tasks/os_overload/CMakeLists.txt | 1 + 03_week/tasks/os_overload/README.md | 42 + 03_week/tasks/os_overload/os_overload.cpp | 21 + 03_week/tasks/os_overload/test.cpp | 308 ++++++ 03_week/tasks/range/CMakeLists.txt | 1 + 03_week/tasks/range/README.md | 11 + 03_week/tasks/range/range.cpp | 7 + 03_week/tasks/range/test.cpp | 98 ++ 03_week/tasks/unique/CMakeLists.txt | 1 + 03_week/tasks/unique/README.md | 11 + 03_week/tasks/unique/test.cpp | 92 ++ 03_week/tasks/unique/unique.cpp | 6 + 04_week/04_class.md | 902 +++++++++++++++++ 04_week/04_class.pdf | Bin 0 -> 251118 bytes 04_week/CMakeLists.txt | 15 + grading/deadlines.json | 46 + 52 files changed, 4357 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/testing_week_01.yml create mode 100644 .github/workflows/testing_week_02.yml create mode 100644 .github/workflows/testing_week_03.yml create mode 100644 03_week/03_data_structures.md create mode 100644 03_week/03_data_structures.pdf create mode 100644 03_week/CMakeLists.txt create mode 100644 03_week/examples/struct_examples.cpp create mode 100644 03_week/examples/union_examples.cpp create mode 100644 03_week/examples/vector_examples.cpp create mode 100644 03_week/tasks/CMakeLists.txt create mode 100644 03_week/tasks/data_stats/CMakeLists.txt create mode 100644 03_week/tasks/data_stats/README.md create mode 100644 03_week/tasks/data_stats/data_stats.cpp create mode 100644 03_week/tasks/data_stats/test.cpp create mode 100644 03_week/tasks/easy_compare/CMakeLists.txt create mode 100644 03_week/tasks/easy_compare/README.md create mode 100644 03_week/tasks/easy_compare/easy_compare.cpp create mode 100644 03_week/tasks/easy_compare/test.cpp create mode 100644 03_week/tasks/enum_operators/CMakeLists.txt create mode 100644 03_week/tasks/enum_operators/README.md create mode 100644 03_week/tasks/enum_operators/enum_operators.cpp create mode 100644 03_week/tasks/enum_operators/test.cpp create mode 100644 03_week/tasks/filter/CMakeLists.txt create mode 100644 03_week/tasks/filter/README.md create mode 100644 03_week/tasks/filter/filter.cpp create mode 100644 03_week/tasks/filter/test.cpp create mode 100644 03_week/tasks/find_all/CMakeLists.txt create mode 100644 03_week/tasks/find_all/README.md create mode 100644 03_week/tasks/find_all/find_all.cpp create mode 100644 03_week/tasks/find_all/test.cpp create mode 100644 03_week/tasks/minmax/CMakeLists.txt create mode 100644 03_week/tasks/minmax/README.md create mode 100644 03_week/tasks/minmax/minmax.cpp create mode 100644 03_week/tasks/minmax/test.cpp create mode 100644 03_week/tasks/os_overload/CMakeLists.txt create mode 100644 03_week/tasks/os_overload/README.md create mode 100644 03_week/tasks/os_overload/os_overload.cpp create mode 100644 03_week/tasks/os_overload/test.cpp create mode 100644 03_week/tasks/range/CMakeLists.txt create mode 100644 03_week/tasks/range/README.md create mode 100644 03_week/tasks/range/range.cpp create mode 100644 03_week/tasks/range/test.cpp create mode 100644 03_week/tasks/unique/CMakeLists.txt create mode 100644 03_week/tasks/unique/README.md create mode 100644 03_week/tasks/unique/test.cpp create mode 100644 03_week/tasks/unique/unique.cpp create mode 100644 04_week/04_class.md create mode 100644 04_week/04_class.pdf create mode 100644 04_week/CMakeLists.txt diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 3309c63c..7b7c319b 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -26,9 +26,10 @@ jobs: echo "Changed files:" echo "$changed_files" - + tasks=("addition" "rms" "print_bits" "check_flags" "length_lit" "quadratic" "char_changer" - "swap_ptr" "func_array" "longest" "last_of_us" "little_big" "pretty_array") + "swap_ptr" "func_array" "longest" "last_of_us" "little_big" "pretty_array" + "data_stats" "unique" "range" "minmax" "find_all" "os_overload" "easy_compare" "filter" "enum_operators") declare -i passed_count=0 declare -i failed_count=0 diff --git a/.github/workflows/testing_week_01.yml b/.github/workflows/testing_week_01.yml new file mode 100644 index 00000000..3ece11af --- /dev/null +++ b/.github/workflows/testing_week_01.yml @@ -0,0 +1,95 @@ +name: Testing Tasks Week 01 + +on: + workflow_dispatch: + inputs: + tasks: + description: 'Select tasks to test' + required: true + type: choice + default: 'all' + options: + - all + - addition + - rms + - print_bits + - check_flags + - length_lit + - quadratic + - char_changer + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install compiler and CMake + run: sudo apt install -y cmake build-essential g++-14 libgtest-dev libgmock-dev + + - name: Configure project + run: cmake -B build + + - name: Determine tasks to run + id: get-tasks + run: | + if [ "${{ github.event.inputs.tasks }}" = "all" ]; then + # Find all tasks + TASKS=() + for dir in 01_week/tasks/*/; do + task=$(basename "$dir") + TASKS+=("$task") + done + echo "tasks=${TASKS[*]}" >> $GITHUB_OUTPUT + else + # Используем указанную задачу + echo "tasks=${{ github.event.inputs.tasks }}" >> $GITHUB_OUTPUT + fi + + - name: Build and run tests for selected tasks + run: | + + IFS=' ' read -ra tasks <<< "${{ steps.get-tasks.outputs.tasks }}" + + declare -i passed_count=0 + declare -i failed_count=0 + declare -i task_count=0 + + echo "=== Starting tests for selected tasks ===" + + for task in "${tasks[@]}"; do + task_count+=1 + echo "=== Processing $task ===" + + if cmake --build build --target test_$task; then + echo "✅ test_$task built successfully" + + if ./build/tasks/test_$task; then + echo "✅ test_$task PASSED" + passed_count+=1 + else + echo "❌ test_$task FAILED" + failed_count+=1 + fi + else + echo "❌ test_$task build FAILED" + failed_count+=1 + fi + done + + echo "=== Test Results Summary ===" + echo "Total tasks in list: ${#tasks[@]}" + echo "Processed: $task_count" + echo "✅ Passed: $passed_count" + echo "❌ Failed: $failed_count" + + if [ $failed_count -gt 0 ]; then + echo "❌ Some tasks failed!" + exit 1 + elif [ $task_count -eq 0 ]; then + echo "No tasks were processed (no changes)" + exit 0 + else + echo "✅ All processed tasks passed!" + exit 0 + fi \ No newline at end of file diff --git a/.github/workflows/testing_week_02.yml b/.github/workflows/testing_week_02.yml new file mode 100644 index 00000000..dc37cec9 --- /dev/null +++ b/.github/workflows/testing_week_02.yml @@ -0,0 +1,94 @@ +name: Testing Tasks Week 02 + +on: + workflow_dispatch: + inputs: + tasks: + description: 'Select tasks to test' + required: true + type: choice + default: 'all' + options: + - all + - swap_ptr + - func_array + - longest + - last_of_us + - little_big + - pretty_array + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install compiler and CMake + run: sudo apt install -y cmake build-essential g++-14 libgtest-dev libgmock-dev + + - name: Configure project + run: cmake -B build + + - name: Determine tasks to run + id: get-tasks + run: | + if [ "${{ github.event.inputs.tasks }}" = "all" ]; then + # Find all tasks + TASKS=() + for dir in 02_week/tasks/*/; do + task=$(basename "$dir") + TASKS+=("$task") + done + echo "tasks=${TASKS[*]}" >> $GITHUB_OUTPUT + else + # Используем указанную задачу + echo "tasks=${{ github.event.inputs.tasks }}" >> $GITHUB_OUTPUT + fi + + - name: Build and run tests for selected tasks + run: | + + IFS=' ' read -ra tasks <<< "${{ steps.get-tasks.outputs.tasks }}" + + declare -i passed_count=0 + declare -i failed_count=0 + declare -i task_count=0 + + echo "=== Starting tests for selected tasks ===" + + for task in "${tasks[@]}"; do + task_count+=1 + echo "=== Processing $task ===" + + if cmake --build build --target test_$task; then + echo "✅ test_$task built successfully" + + if ./build/tasks/test_$task; then + echo "✅ test_$task PASSED" + passed_count+=1 + else + echo "❌ test_$task FAILED" + failed_count+=1 + fi + else + echo "❌ test_$task build FAILED" + failed_count+=1 + fi + done + + echo "=== Test Results Summary ===" + echo "Total tasks in list: ${#tasks[@]}" + echo "Processed: $task_count" + echo "✅ Passed: $passed_count" + echo "❌ Failed: $failed_count" + + if [ $failed_count -gt 0 ]; then + echo "❌ Some tasks failed!" + exit 1 + elif [ $task_count -eq 0 ]; then + echo "No tasks were processed (no changes)" + exit 0 + else + echo "✅ All processed tasks passed!" + exit 0 + fi \ No newline at end of file diff --git a/.github/workflows/testing_week_03.yml b/.github/workflows/testing_week_03.yml new file mode 100644 index 00000000..d4a2ba75 --- /dev/null +++ b/.github/workflows/testing_week_03.yml @@ -0,0 +1,100 @@ +name: Testing Tasks Week 03 + +on: + workflow_dispatch: + inputs: + tasks: + description: 'Select tasks to test' + required: true + type: choice + default: 'all' + options: + - all + - data_stats + - unique + - range + - minmax + - find_all + - os_overload + - easy_compare + - filter + - enum_operators + + schedule: + - cron: '59 20 18 12 *' # UTC: 20:59 = 23:59 MSK 18 December + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install compiler and CMake + run: sudo apt install -y cmake build-essential g++-14 libgtest-dev libgmock-dev + + - name: Configure project + run: cmake -B build + + - name: Determine tasks to run + id: get-tasks + run: | + if [ "${{ github.event.inputs.tasks }}" = "all" ]; then + # Find all tasks + TASKS=() + for dir in 03_week/tasks/*/; do + task=$(basename "$dir") + TASKS+=("$task") + done + echo "tasks=${TASKS[*]}" >> $GITHUB_OUTPUT + else + # Используем указанную задачу + echo "tasks=${{ github.event.inputs.tasks }}" >> $GITHUB_OUTPUT + fi + + - name: Build and run tests for selected tasks + run: | + + IFS=' ' read -ra tasks <<< "${{ steps.get-tasks.outputs.tasks }}" + + declare -i passed_count=0 + declare -i failed_count=0 + declare -i task_count=0 + + echo "=== Starting tests for selected tasks ===" + + for task in "${tasks[@]}"; do + task_count+=1 + echo "=== Processing $task ===" + + if cmake --build build --target test_$task; then + echo "✅ test_$task built successfully" + + if ./build/tasks/test_$task; then + echo "✅ test_$task PASSED" + passed_count+=1 + else + echo "❌ test_$task FAILED" + failed_count+=1 + fi + else + echo "❌ test_$task build FAILED" + failed_count+=1 + fi + done + + echo "=== Test Results Summary ===" + echo "Total tasks in list: ${#tasks[@]}" + echo "Processed: $task_count" + echo "✅ Passed: $passed_count" + echo "❌ Failed: $failed_count" + + if [ $failed_count -gt 0 ]; then + echo "❌ Some tasks failed!" + exit 1 + elif [ $task_count -eq 0 ]; then + echo "No tasks were processed (no changes)" + exit 0 + else + echo "✅ All processed tasks passed!" + exit 0 + fi \ No newline at end of file diff --git a/01_week/01_basic_cpp.md b/01_week/01_basic_cpp.md index 12c07244..138bdffe 100644 --- a/01_week/01_basic_cpp.md +++ b/01_week/01_basic_cpp.md @@ -571,7 +571,7 @@ auto rs = R"(popular escape-sequences in "C++" '\n' '\t')"; // const char* 1. -> : `a::b` 2. -> : `a++`, `a--`, `(a)`, `{a}`, `a()`, `a[]`, `a.b`, `a->b` -3. <- : `++a`, `--a`, `+a`, `-a`, `!a`, `()a`, `*a`, `&a`, `sizeof`, +3. <- : `++a`, `--a`, `+a`, `-a`, `!a`, `~a` `()a`, `*a`, `&a`, `sizeof`, `new`, `delete` 4. -> : `a.*b`, `a->*b` 5. -> : `a * b`, `a / b`, `a % b` diff --git a/03_week/03_data_structures.md b/03_week/03_data_structures.md new file mode 100644 index 00000000..67aeea52 --- /dev/null +++ b/03_week/03_data_structures.md @@ -0,0 +1,916 @@ +# Лекция 3. Структуры данных. Перегрузка функций. Вектор + +1. [Структура `struct`](#struct) + - [Размер структуры](#struct_sizeof) + - [Создание объекта](#struct_var) + - [Инициализация полей значениями по умолчанию](#struct_default_value) + - [Доступ к полям структуры. Оператор `.`](#operator_dot) + - [Доступ к полям структуры. Оператор `->`](#operator_arrow) +1. [Объединение `union`](#union) + - [Использование неактивной переменной](#union_using_inactive) + - [Анонимные объединения](#union_anonymous) +1. [Пара `std::pair`](#std_pair) + - [Инициализация и доступ к полям](#std_pair_access) + - [Доступ к полям с помощью `std::get` (_C++11_)](#std_pair_get) + - [Создание с помощью `std::make_pair`](#std_make_pair) +1. [Кортеж `std::tuple` (_С++11_)](#std_tuple) + - [Инициализация](#std_tuple_init) + - [Доступ к полям с помощью `std::get`](#std_tuple_get) + - [Создание с помощью `std::make_tuple`](#std_make_tuple) +1. [Функция связывания `std::tie`](#std_tie) +1. [Структурное связывание (_structered bindings_) _C++17_](#structered_bindings) +1. [Перегрузка функций](#overloading_function) + - [Перегрузка операторов](#overloading_operator) +1. [Асимптотическая сложность](#big_o_notation) +1. [Последовательные контейнеры](#sequentual_container) +1. [Контейнер `std::vector`](#std_vector) + - [Инициализация `std::vector`](#std_vector_init) + - [Устройство `std::vector`](#std_vector_structure) + - [Обзор методов `std::vector`](#std_vector_overview) + - [Вместимость контейнера `std::vector`](#std_vector_capacity) + - [Добавление в конец `std::vector`](#std_vector_push_back) + - [Доступ к элементам `std::vector`](#std_vector_access) + - [Итераторы](#iterators) + - [Итераторы `std::vector`](#std_vector_iterators) + - [Итерирование `std::vector`](#std_vector_iterating) + - [Метод `resize()`](#std_vector_resize) + - [Метод `reserve()`](#std_vector_reserve) + - [Метод `pop_back()`](#std_vector_pop_back) + - [Метод `clear()`](#std_vector_clear) + - [Остальные методы `std::vector`](#std_vector_overview) + + +## Структура `struct` + +Структура представляет собой пользовательский тип данных, позволяющий +объединять несколько переменных разных типов под одним именем. + +Синтаксис определения: `struct { ... };` + +- `` - имя структуры, является именем нового пользовательского типа данных +- `...` - ноль и более переменных + +Синтаксис объявления: `struct ;` + +- может пригодиться, когда необходимо использовать структуру раньше, чем + она определена. + +Переменная, объявленная внутри структуры, называется **полем** структуры. + +Гарантируется, что поля структуры располагаются в памяти в порядке +объявления полей внутри структуры. + +### Размер структуры + +Размер структуры зависит от размера входящих в неё полей и выравнивания +(_alighnment_). + +```c++ +struct Point { int x; int y; }; +struct IID { int x; int y; double d; }; +struct IDI { int x; double d; int y;}; +struct IDIB { int x; double d; int y; bool b}; + +std::cout << sizeof(Point) << std::endl; // 8 +std::cout << sizeof(IID) << std::endl; // 16 +std::cout << sizeof(IDI) << std::endl; // 24 +std::cout << sizeof(IDIB) << std::endl; // 24 +``` + +### Создание объекта + +Имя структуры используется в качестве имени типа при создании объекта. + +Синтаксис: ` ;` + +Рекомендуется сразу инициализировать поля объекта, сделать это можно, +используя фигурные скобки `{}` и перечисляя значение полей в том порядке, +в каком они определены в структуре. Также, можно использовать `()` +непосредственно после имени объекта. + +```c++ +struct Product { + int count; + double price; +}; + +Product obj; +Product obj_empty = {}; +Product obj_init = {10, 300.0}; +Product obj_part = {10}; // partitial +Product obj_agr{10, 300.0}; // uniform +``` + +Имя типа структуры может совпадать с каким-либо объектом, тогда при объявлении +можно разрешить конфликт имен добавив `struct` перед именем типа структуры +(как правило, лучше **ИЗБЕЖАТЬ** совпадающих названий): + +Синтаксис: `struct ;` + +```c++ +struct Product { + int count; + double price; +}; + +std::string Product = "some_product_name"; +// Product p = {10, 300.0}; // compile error +struct Product p = {10, 300.0}; // OK +``` + +Можно объявить структуру сразу с созданием объектов данного типа, **НО** +лучше так **НЕ** делать, особенно в глобальной области видимости. + +Синтаксис: `struct { ... } , ...;` + +```c++ +struct Point { + int x; + int y; +} p1, p2; +``` + +### Инициализация полей значениями по умолчанию + +Начиная с _C++11_ можно инициализировать поля значениями по умолчанию +через `=` при определении структуры. Тогда при создании объекта данного +типа поля будут инициализированы значениями по умолчанию. + +```c++ +struct Product { + int count = 0; + double price = 100.0; +}; + +Product one; +Product two = {}; +Product three{}; +``` + +### Доступ к полям структуры. Оператор `.` + +Доступ к полям структуры через объект типа структуры осуществляется через +оператор `.` точка. После имени объекта ставится `.` и затем имя поля: + +```c++ +struct Product { + int count; + double price; +}; + +Product obj; +obj.count = 10; +obj.price = 300.0; +``` + +### Доступ к полям структуры. Оператор `->` + +Доступ к полям структуры через указатель на объект типа структуры +осуществляется через оператор `->` стрелочка. После указателя на объект +ставится `->` и затем имя поля: + +```c++ +struct Product { + int count; + double price; +}; + +Product obj; +Product* ptr = &obj; +ptr->count = 10; +ptr->price = 300.0; +``` + +## Объединение `union` + +Объединение представляет собой пользовательский тип данных, который позволяет +хранить разные типы данных в одной области памяти. В один момент может храниться +только один тип данных. Размер объединения соответствует наибольшему по размеру +типу, входящего в объединение. + +Синтаксис: `union { ... };` + +```c++ +union Union { + char c; + int i; + double d; +}; +``` + +Все входящие в объединение типы переменных расположены по одному адресу. + +Доступ к переменным аналогичен структурам. + +### Использование неактивной переменной + +Активная переменная определяется последним присваиванием, при этом +время жизни предыдущей активной переменной заканчивается. Использование +неактивной переменной это **UB**. Однако, современные компиляторы, как +правило, представляют расширение языка и позволяют читать неактивные +переменные. Таким образом, можно получить доступ к отдельным байтам. + +```c++ +union Color { + uint32_t value; + struct { + uint8_t a + uint8_t b; + uint8_t g; + uint8_t r; + } components; +}; + +Color c; +c.value = 0x00FF9955; + +std::cout << "Red: " << c.components.r << std::endl; // 0 +std::cout << "Green: " << c.components.g << std::endl; // +std::cout << "Blue: " << c.components.b << std::endl; // 255 +std::cout << "Alpha: " << c.components.a << std::endl; // 0 +``` +- но это по-прежнему **UB** и платформо-зависимый код, на _little-endian_ + и _big-endian_ различный вывод. + +Аналогично можно работать отдельно с битами: + +```c++ +union HardwareRegister { + uint32_t raw; + struct { + uint32_t enable : 1; + uint32_t mode : 3; + uint32_t clock_divider : 4; + uint32_t reserved : 24; + } bits; // 1 + 3 + 4 + 24 = 32 +}; + +HardwareRegister reg; +reg.raw = 0; +reg.bits.enable = 1; +reg.bits.mode = 5; +reg.bits.clock_divider = 8; +``` + +### Анонимные объединения + +Можно создавать анонимные объединения, тогда все внутренние имена переменных +попадают во внешнюю область видимости объединения и не должно быть +конфликта имен. + +```c++ +struct Variant { + enum Type { INT, FLOAT, STRING } type; + + union { + int intValue; + float floatValue; + char stringValue[50]; + }; +}; +``` + +## Пара `std::pair` + +Пара `std::pair` - это шаблонная структура, позволяющая хранить переменные +двух типов в полях `first` и `second`. + +Заголовочный файл: `` + +Объявление: `std::pair ;` +- `T1` - тип первой переменной +- `T2` - тип второй переменной + +Методы: +- `swap` - для обмена значений с другой парой + +Доступны операторы сравнения, сравнение производится лексикографически. + +Пара используется в стандартных ассоциативных контейнерах, при возврате +ключа и значения контейнера. А также, может быть использована при возврате +двух значений из функции. Как правило, это менее информативно, чем структура +с понятными именами полей. + +### Инициализация и доступ к полям + +Доступ к соответствующим переменным в паре, осуществляется через имена полей +`first` и `second`. + +Инициализировать пару: + +```c++ +std::pair p; // uninitialized +p.first = 'c'; +p.second = static_cast(p.first); + +std::pair p1 = {true, "Book"}; +std::pair p2(10, 3.14); // ctor +std::pair p3{true, 2.73}; // uniform C++11 +``` + +### Доступ к полям с помощью `std::get` (_C++11_) + +В заголовочном файле `` есть шаблонная функция `std::get`, которая +на вход принимает пару и возвращает ссылку на поле пары. + +Может работать по индексу: +- `0` - `first` +- `1` - `second` +- другие значения приведут к ошибке компиляции + +Может работать по типу переменной, в случае одинаковых типов будет ошибка +компиляции. + +```c++ +std::pair p = {true, 10}; +std::cout << '(' << std::get<0>(p) << ", " << std::get<1>(p) << ')' << std::endl; +std::cout << '(' << std::get(p) << ", " << std::get(p) << ')' << std::endl; +std::get(p) = false; +std::get<1>(p) = 0; +``` + +### Создание с помощью `std::make_pair` + +В заголовочном файле `` есть шаблонная функция `std::make_pair` +принимающая два аргумента и возвращающая пару из двух аргументов. +Удобство заключается в возможности использования вывода типа переменной, +если написать ключевое слово `auto`. + +```c++ +auto p1 = std::make_pair(15, 'c'); // std::pair +auto p2 = std::make_pair(true, 3.14); // std::pair + +int value = 3; +int array[] = {1, 2, 3}; +auto p3 = std::make_pair(std::ref(value), array); // std::pair +``` + +## Кортеж `std::tuple` (_С++11_) + +Кортеж `std::tuple` - шаблонный класс, позволяющий хранить произвольное число +аргументов различных типов. + +Заголовочный файл: `` + +Объявление: `std::tuple ;` +- `T...` - произвольное количество различных типов + +Методы: +- `swap` - для обмена значений с другим аналогичным по типам кортежем + +Для кортежа определены операторы сравнения. + +### Инициализация + +Инициализировать кортеж можно привычными способами: + +```c++ +std::tuple t; // uninitialized +std::tuple t1 = {true, "Book", 10}; // copy +std::tuple t2(10, 3.14, -1); // ctor +std::tuple p3{true, 2.73, 0, '0'}; // uniform C++11 +``` + +### Доступ к полям с помощью `std::get` + +Поскольку кортеж не имеет прямого доступа к полям, то получить значения +полей кортежа или изменить их можно с помощью шаблонной функции `std::get`. + +Функция принимает кортеж, а в качестве параметров шаблона внутри `<>` +указывается либо порядковый номер начиная с `0` и меньше количества переменных, +либо тип данных, если он уникален для кортежа + +```c++ +std::tuple tpl(10., 'a', 10); +std::get<0>(tpl) += 1; +std::get<1>(tpl) += 1; +std::get<2>(tpl) += 1; +// tpl = {11, 'b', 11}; +std::get(tpl) += 1; +std::get(tpl) += 1; +std::get(tpl) += 1; +// tpl = {12, 'c', 12}; +``` + +### Создание с помощью `std::make_tuple` + +В заголовочном файле `` есть шаблонная функция `std::make_tuple` +принимающая произвольное число аргументов различных типов и возвращающая +кортеж из переданных аргументов. + +Удобство заключается в возможности использования вывода типа переменной, +если написать ключевое слово `auto`. + +```c++ +auto t1 = std::make_tuple(15, 'c', 3.14); // std::tuple + +struct Product { int count; double price; }; +auto t2 = std::make_pair(true, Product{10, 3.14}); // std::tuple +std::cout << std::get<1>(t2).count << " " << std::get<1>(t2).price; +``` + +## Функция связывания `std::tie` + +Шаблонная функция позволяющая создать кортеж ссылок на переданные +аргументы или ссылку на специальный объект `std::ignore` + +- применяется для лексикографического сравнения структур: + +```c++ +struct Pair { int value; std::string name; } p1, p2; +std::tie(p1.value, p1.name) < std::tie(p2.value, p2.name); +``` + +- для распаковки кортежа или пары (так как пара конвертируется в кортеж): + +```c++ +int i; +double d; +std::tie(i, std::ignore, d) = std::tuple(1, "Test", 2.0); +``` + +## Структурное связывание (_structered bindings_) _C++17_ + +_Structered bindings_ - синтаксическая конструкция, введенная в _C++17_, +которая позволяет распаковывать составляющие составных типов данных +в отдельные переменные. + +Синтаксис: ` auto [...] = ;` + +Работает с массивами, структурами, парами, кортежами. + +```c++ +int array[] = {1, 2}; + +auto& [first, second] = array; +first = 3; +second = 4; // array = {3, 4}; +``` + +```c++ +struct Product { int count; double price; }; + +Product prod{10, 100.0}; +auto [count, price] = prod; +auto& [ref_count, ref_price] = prod; +const auto& [cref_count, cref_price] = prod; +``` + +```c++ +std::pair p(true, 10); +const auto& [b, i] = p; +``` + +```c++ +std::tuple tpl(10., 'a', 10); +auto [f, c, i] = tpl; +``` + +## Перегрузка функций + +Перегрузка функций позволяет иметь функции с одинаковыми именами для различных +входных аргументов. + +Перегрузить функцию можно только по аргументам, изменение возвращаемого типа, +без изменения аргументов **НЕ** является перегрузкой. + +CV-квалификаторы изменяют тип, поэтому добавление константности к аргументам +является перегрузкой. + +```c++ +void PrintValues(const int* begin, const int* end) {} +void PrintValues(int* begin, int* end) {} +void PrintValues(const int* array, size_t size) {} +void PrintValues(const Point& point) {} +// Point PrintValues(const Point& point) {} // compile error +``` + +Функция, имеющая значения по умолчанию, имеет перегрузки функции, без +аргументов по умолчанию, причем количество перегрузок соответствует +количеству аргументов по умолчанию. + +```c++ +void PrintValues(int x, float f = 0.0, char c = 'a') { + std::cout << "x = " << x << ", f = " << f << ", c = " << c << std::endl; +} + +PrintValues(x, f, c); +PrintValues(x, f); +PrintValues(x); +``` + +### Перегрузка операторов + +Поскольку операторы являются функциями, то операторы можно перегрузить. +Что позволяет использовать операторы для своих типов данных. + +Синтаксис: ` operator(...);` + +- `` - символьное обозначение оператора (`+`, `<<`, `==`, ...) +- `...` - один или два аргумента (для унарного и бинарного операторов) +- `` - тип возвращаемого значения + +**НЕЛЬЗЯ** перегрузить операторы: `::`, `?:`, `.`, `.*`, `typeid`, `sizeof`, `alignof` + +Перегрузка оператора `<<` для вывода в поток: + +```c++ +struct Pair { + int value; + std::string name; +}; + +std::ostream& operator<<(std::ostream& os, const Pair& pair) { + os << '(' << value << ", " << name << ')'; + return os; +} +``` + +Перегрузка операторов сравнения: + +```c++ +bool operator==(const Pair& lhs, const Pair& rhs) { + return lhs.value == rhs.value && lhs.name == rhs.name; +} + +bool operator<(const Pair& lhs, const Pair& rhs) { + if (lhs.value == rhs.value) { + return lhs.name < rhs.name; + } + return lhs.value < rhs.value; +// return (lhs.value == rhs.value) ? lhs.name < rhs.name : lhs.value < rhs.value; +// return std::tie(lhs.value, lhs.name) < std::tie(rhs.value, rhs.name); +} + +bool operator!=(const Pair& lhs, const Pair& rhs) { + return !(lhs == rhs); +} + +bool operator>(const Pair& lhs, const Pair& rhs) { + return !(lhs < rhs || lhs == rhs); +} + +bool operator>=(const Pair& lhs, const Pair& rhs) { + return !(lhs < rhs); +} + +bool operator<=(const Pair& lhs, const Pair& rhs) { + return lhs < rhs || lhs == rhs; +} +``` + +## Асимптотическая сложность + +Асимптотическая сложность — это математический способ оценки, как время +выполнения или объём потребляемой памяти алгоритма растут с увеличением +размера входных данных (`n`), когда `n` стремится к бесконечности. + +При оценке игнорируются константы и младшие члены в формуле, что позволяет +сосредоточиться на основном факторе масштабирования. Оценка позволяет +сравнивать эффективность алгоритмов независимо от аппаратного обеспечения. + +Обычно используется O-нотация («О большое») для определения верхней границы +(наихудшего случая). + +Распространенная асимптотическая сложность: + +1. $O(1)$ — Константная сложность + - Время выполнения не зависит от размера входных данных. + +1. $O(log(n))$ — Логарифмическая сложность + - Медленный рост. Удвоение `n` увеличивает время работы лишь на константу. + +1. $O(n)$ — Линейная сложность + - Время растет прямо пропорционально n. + +1. $O(n \cdot log(n))$ — Линейно-логарифмическая сложность + - Золотой стандарт для эффективных алгоритмов сортировки общего назначения. + +1. $O(n^a)$ — Степенная сложность + - Время растет пропорционально степени размера данных. При больших `n` + становится очень медленно. + +1. $O(2^n)$ — Экспоненциальная сложность + - Чрезвычайно быстрый рост. Практически неприменимо для задач с `n` > 30-40. + +1. $O(n!)$ — Факториальная сложность + - Рост быстрее экспоненциальной. Характерна для задач полного перебора всех перестановок. + +## Последовательные контейнеры v + +Стандартная библиотека _STL_ содержит множество шаблонных классов, которые +представляют различные структуры данных. Как правило, их называют контейнерами. +Контейнеры способны хранить произвольный тип данных. Контейнеры представляют +собой коллекцию элементов определенного типа. Контейнеры предоставляют +удобный способ взаимодействовать с элементами + +В качестве параметров шаблона внутри треугольных скобок `<>` обычно необходимо +указать тип данных, который использует контейнер. + +Для последовательных контейнеров определен оператор доступа по индексу `[]` + +## Контейнер `std::vector` + +Контейнер `std::vector` предназначен для хранения массива данных определенного типа +непрерывно в динамической памяти. + +Контейнер обеспечивает быстрое добавления элементов в конец и увеличение размера +блока памяти под элементы при необходимости. + +Для гарантии непрерывности памяти, при добавлении элемента в заполненный контейнер, +происходит **реалокация** всех элементов контейнера. + +Заголовочный файл: `` + +Синтаксис: `std::vector ;` +- `T` - произвольный тип данных +- `` - имя переменной + +### Инициализация `std::vector` + +Доступны множество способов инициализации вектора: + +```c++ +std::vector v1; // empty +std::vector v2(v1); // copy ctor from other vector +std::vector v3 = v1; // copy ctor from other vector +// ctor +std::vector v4(5); // 5 elemets with zero value +std::vector v5(5, 2); // 5 elements equal 2 +// initializer list +std::vector v6{1, 2, 4, 5}; // with elements 1, 2, 4, 5 +std::vector v7 = {1, 2, 3, 5}; // with elements 1, 2, 3, 5 +// iterators +std::vector v8(v7.begin(), v7.end()); // same as v7 +``` + +### Устройство `std::vector` + +Контейнер должен иметь **указатель на данные** (адрес начала памяти в куче, +выделенной под хранение элементов вектора), **вместимость выделенной памяти** +(сколько элементов данного типа можно положить), **текущее количество элементов** +(сколько элементов данного типа уже положено в контейнер). + +Условно можно представить себе, что хранится 3 поля: указатель на данные, +размер данных _size_, размер выделенной памяти _capacity_ + +Контейнер имеет размер 24 байта. + +Фактически, стандартный контейнер устроен несколько иначе, внутри хранится +3 указателя: на начало данных, за конец выделенной памяти, за конец элементов + +Элементы контейнера располагаются не на **стеке**, а в области памяти, называемой +куча. + +### Обзор методов `std::vector` + +Контейнер имеет встроенные функции для работы с контейнером, такие функции +называются **методы**. + +Доступ к элементам: +- `at(size_t pos)` - метод, принимающий индекс элемента и возвращающий ссылку +- `[size_t pos]` - оператор `[]`, принимающий индекс и возвращающий ссылку +- `font()` - метод, возвращающий ссылку на первый элемент +- `back()` - метод, возвращающий ссылку на последний элемент +- `data()` - метод, возвращающий указатель на начало данных + +Вместимость контейнера: +- `empty()` - возвращает `true` для пустого контейнера +- `size()` - возвращает количество элементов +- `capacity()` - возвращает вместимость контейнера +- `reserve(size_t count)` - выделяет память под `count` элементов +- `shrink_to_fit()` - уменьшает вместимость вектора в соответствии с `size()` + +Модифицирующие методы: +- `assign()` - заменить текущее содержимое на новое +- `clear()` - очистить содержимое (без фактического очищения) +- `push_back()` - добавить элемент в конец контейнера +- `pop_back()` - удалить последний элемент из контейнера +- `insert()` - добавить элементы в определенную позицию +- `erase()` - удалить элементы с определенной позиции +- `resize()` - изменить количество элементов контейнера +- `swap()` - обменять содержимое контейнеров. + +### Вместимость контейнера `std::vector` + +По умолчанию, неинициализированный, пустой контейнер **НЕ** выделяет память +под элементы. + +Инициализированный контейнер выделяет память ровно под количество элементов. + +Методы, проверяющие вместимость и размер: + +- `empty()` — возвращает true, если контейнер пуст +- `size()` — возвращает текущий размер, количество элементов в контейнере +- `capacity()` — возвращает вместимость контейнера, под какое количество + элементов выделена память + +### Добавление в конец `std::vector` + +Контейнер оптимизирован под добавление элементов в конец. + +Метод, добавляющий элемент в конец: + +- `push_back()` - добавить элемент, принимаемый в аргументах, в конец контейнера + +Заполнение контейнера в цикле (не оптимально). Несколько раз в ходе заполнения +контейнера произойдет реалокация, то есть выделится новый блок памяти в куче, +достаточный для элементов контейнера, и все элементы будут скопированы по +новому адресу. + +Как правило, при добавлении элемента в полностью заполненный контейнер, +вместимость контейнера будет **увеличиваться в 2 раза** + +Сложность: **амортизированная O(1)** + +```c++ +std::vector v; +size_t capacity = v.capacity(); + +std::cout << v.data() << std::endl; // int* (address) +std::cout << v.size() << ' ' << v.capacity() << std::endl; +for (int i = 0; i < 100; ++i) { + v.push_back(i); + if (capacity < v.capacity()) { + capacity = v.capacity(); + + std::cout << v.data() << std::endl; // int* (address) + std::cout << v.size() << ' ' << v.capacity() << std::endl; + } +} +``` + +### Доступ к элементам `std::vector` + +Доступ следует осуществлять только к валидным элементам. + +Доступ к элементам осуществляется с помощью оператора `[]`, принимающего +индекс, и с помощью методов: + +- `[size_t pos]` — принимает индекс и возвращает ссылку на элемент +- `at(size_t pos)` — принимает индекс и возвращает ссылку на элемент, если + переданный индекс (позиция) невалиден, то выбрасывается исключение + `std::out_of_range` +- `fornt()` — возвращает ссылку на первый элемент +- `back()` — возвращает ссылку на последний элемент +- `data()` — возвращает сырой указатель на начало данных + +Доступ к элементам вне диапазона контейнера, получение ссылок на элементы +для пустого контейнера (`v.empty()` возвращает `true`) это **UB** + +### Итераторы + +Итераторы - фундаментальная концепция языка C++, выступающая в качестве +обобщения указателей. Итераторы обеспечивают удобный **способ доступа** и +**перемещения** по элементам различных контейнеров. + +На данном этапе будем относиться к итераторам, как к удобной обертке над +указателем. + +Итераторы имитируют поведение **указателей**: разыменование, арифметику, сравнение + +Существуют разные категории итераторов, поэтому в зависимости от контейнера +поддерживаются не все операции с итераторами + +Каждый контейнер имеет **свой тип итератора**. + +Например, для вектора целочисленных значений тип итератора: +`std::vector::iterator` + +Константная версия итератора имеет тип: +`std::vector::const_iterator` + +Используются для реализации **range-based for** и в алгоритмах стандартной +библиотеки + +Как правило, можно получить итератор на начало (первый элемент) **begin** +и на конец **end** (за последний элемент). А также, их константные версии +**cbegin** и **cend** + +### Итераторы `std::vector` + +Итератор можно получить воспользовавшись методами контейнера: + +- `begin()` — возвращает итератор на начало +- `end()` — возвращает итератор на конец +- `rbegin()` — возвращает обратный итератор на начало +- `rend()` — возвращает обратный итератор на конец + +Также присутствуют методы с приставкой c возвращающие их константные версии. + +Чтобы не писать длинный тип используется ключевое слово **auto** + +### Итерирование `std::vector` + +Контейнер поддерживает различные способы итерирования, **range-based for**: + +```c++ +std::vector v = {1, 2, 3, 5}; +for (auto vi : v) { + std::cout << vi << std::endl; +} +``` + +Итерирование по индексу (порядковыому номеру): + +```c++ +std::vector v = {1, 2, 3, 5}; +for (size_t i = 0; i < v.size(); ++i) { + std::cout << v[i] << std::endl; +} +``` + +Использование прямых итераторов: + +```c++ +std::vector v = {1, 2, 3, 5}; +for (auto it = v.begin(); it != v.end(); ++it) { + std::cout << *it << std::endl; +} +``` + +Использование обратных итераторов, для обхода контейнера в обратном порядке: + +```c++ +std::vector v = {1, 2, 3, 5}; +for (auto it = v.rbegin(); it != v.rend(); ++it) { + std::cout << *it << std::endl; +} +``` + +### Метод `resize()` + +Метод `resize()` изменяет размер контейнера, причем в случае увеличения создаются +значения по умолчанию, в случае уменьшения вместимость контейнера, как правило, +**НЕ** уменьшается + +- `resize(size_t count)` — принимает требуемое количество элементов +- `resize(size_t count, const T& value)` — принимает требуемое количество элементов + и значение элемента, которым необходимо заполнить контейнер в случае увеличения + размера + +Сложность: **O(n)** или **O(1)** при уменьшении. + +Тратятся ресурсы на заполнение **значениями по умолчанию** + +Изменяет _size_ контейнера, а также _capacity_ при необходимости **увеличения** + +### Метод `reserve()` + +Метод `reserve()` выделяет нужное количество памяти, не заполняя элементы значением +по умолчанию, при этом _size_ контейнера не изменяется, а _capacity_ может только +увеличиваться в соответствии c заданным значением + +- `reserve(size_t new_capacity)` — принимает новое значение вместимости контейнера + +Сложность: **O(n)** + +Если известна требуемая вместимость заранее, наиболее оптимальный способ создания: + +```c++ +std::vector v; +v.reserve(100); +for (size_t i = 0; i < 100; ++i) { + v.push_back(i); +} +``` + +### Метод `pop_back()` + +Метод, удаляющий последний элемент: + +- `pop_back()` — удаляет элемент из конца контейнера + +Как правило, просто уменьшает размер контейнера, или перемещает указатель на конец +элементов, **НЕ** вызывает реалокацию памяти + +Сложность: **O(1)** + +`pop_back()` от пустого контейнера (`v.empty()` возвращает `true`) это **UB** + +### Метод `clear()` + +Метод `clear()` очищает контейнер, _size_ = 0, но _capacity_ **НЕ** изменяется + +Как правило, просто уменьшает размер контейнера, перемещает указатель на конец +элементов на начало. **НЕ** освобождает память + +Сложность: **O(1)** как правило просто переносится указатель конца элементов на начало + +### Остальные методы `std::vector` + +Основные модифицирующие методы контейнера: + +- `shrink_to_fit()` — уменьшает _capacity_ в соответствии с текущим _size_, + реалокация, **O(n)** +- `insert()` — вставляет элемент или диапазон в произвольное место в контейнер, **O(n)**, + вставка в конец **O(1)**. Возвращает итератор на начало вставки. +- `erase()` — удаляет элемент или диапазон из произвольного места в контейнер, **O(n)**, + поскольку необходимо передвинуть все элементы контейнера, удалить из конца **O(1)**. + Возвращает итератор после последнего удаленного элемента. +- `swap()` — обменивает содержимое двух контейнеров, **O(1)** поскольку осуществляется + обмен указателей +- `assign()` — заменяет содержимое контейнера на указанное значение или на диапазон, + **O(n)** + +[и другие ...](https://en.cppreference.com/w/cpp/container/vector.html) \ No newline at end of file diff --git a/03_week/03_data_structures.pdf b/03_week/03_data_structures.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7b5b63599b794dc4d75bd99a57e31a5d3ccab31e GIT binary patch literal 308213 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ⅇ1;ya>5bN2aNn=(&Yn--0u)`48-9czeW#U_ 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

4P#DD!GJ<~Myy1>?^7Cl< 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 literal 0 HcmV?d00001 diff --git a/03_week/CMakeLists.txt b/03_week/CMakeLists.txt new file mode 100644 index 00000000..e5df5bac --- /dev/null +++ b/03_week/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.14) # Минимальная требуемая версия CMake +project(03_week) # Необходим для инициализации cmake + +set(CMAKE_CXX_STANDARD 20) # Версия стандарта C++ +set(CMAKE_CXX_STANDARD_REQUIRED ON) # Гарантирует использование указанной версии стандарта + +set(EXAMPLES_DIR examples) # Определим переменную с именем директории +set(TASKS_DIR tasks) + +add_subdirectory(tasks) + +# Создать исполняемый файл для каждого примера +if (BUILD_EXAMPLES_03_WEEK) + add_example(struct_examples ${EXAMPLES_DIR}/struct_examples.cpp) + add_example(union_examples ${EXAMPLES_DIR}/union_examples.cpp) + add_example(vector_examples ${EXAMPLES_DIR}/vector_examples.cpp) +endif() \ No newline at end of file diff --git a/03_week/examples/struct_examples.cpp b/03_week/examples/struct_examples.cpp new file mode 100644 index 00000000..11484025 --- /dev/null +++ b/03_week/examples/struct_examples.cpp @@ -0,0 +1,172 @@ +#include +#include + +struct BoolBool { bool x; bool y; }; +struct Point { int x; int y; }; +struct IID { int x; int y; double d; }; +struct IDI { int x; double d; int y;}; +struct IDIB { int x; double d; int y; bool b;}; +struct IIDB { int x; int y; double d; bool b;}; +struct IISDB { int x; int y; std::string s; double d; bool b;}; + + +void struct_sizeof() { + std::cout << __func__ << ':' << std::endl; + std::cout << "sizeof(BoolBool): " << sizeof(BoolBool) << std::endl; // 2 + std::cout << "sizeof(Point): " << sizeof(Point) << std::endl; // 8 + std::cout << "sizeof(IID): " << sizeof(IID) << std::endl; // 16 + std::cout << "sizeof(IDI): " << sizeof(IDI) << std::endl; // 24 + std::cout << "sizeof(IDIB): " << sizeof(IDIB) << std::endl; // 24 + std::cout << "sizeof(IIDB): " << sizeof(IIDB) << std::endl; // 24 + std::cout << "sizeof(IISDB): " << sizeof(IISDB) << std::endl; // 56 + std::cout << std::endl; +} + +void struct_alignof() { + std::cout << __func__ << ':' << std::endl; + std::cout << "alignof(BoolBool): " << alignof(BoolBool) << std::endl; // 1 + std::cout << "alignof(Point): " << alignof(Point) << std::endl; // 4 + std::cout << "alignof(IID): " << alignof(IID) << std::endl; // 8 + std::cout << "alignof(IDI): " << alignof(IDI) << std::endl; // 8 + std::cout << "alignof(IDIB): " << alignof(IDIB) << std::endl; // 8 + std::cout << "alignof(IIDB): " << alignof(IIDB) << std::endl; // 8 + std::cout << "alignof(IISDB): " << alignof(IISDB) << std::endl; // 8 + std::cout << std::endl; +} + +void struct_address() { + std::cout << __func__ << ':' << std::endl; + { + BoolBool obj; + std::cout << "struct BoolBool: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + } + { + Point obj; + std::cout << "struct Point: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + } + { + IID obj; + std::cout << "struct IID: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + + } + { + IDI obj; + std::cout << "struct IDI: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + } + { + IDIB obj; + std::cout << "struct IDIB: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + std::cout << "&obj.b: " << &(obj.b) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; + } + { + IIDB obj; + std::cout << "struct IIDB: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + std::cout << "&obj.b: " << &(obj.b) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; + } + { + IISDB obj; + std::cout << "struct IISDB: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.x: " << &(obj.x) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.x) << std::endl; + std::cout << "&obj.y: " << &(obj.y) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.y) << std::endl; + std::cout << "&obj.s: " << &(obj.s) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.s) << std::endl; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + std::cout << "&obj.b: " << &(obj.b) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; + } + std::cout << std::endl; +} + +void struct_creation() { + std::cout << __func__ << ':' << std::endl; + { + Point p; + Point p2 = {1, 2}; + Point p3{2, 3}; + Point p4 = {}; + Point p5 = {1}; + } + { + std::string Point = "some_product_name"; + // Point p = {10, 300}; // compile error + struct Point p = {10, 300}; // OK + } + std::cout << std::endl; +} + +struct Inner { + bool b = false; +}; + +struct A { + int a = 0; + Inner inner = {}; +}; + +void struct_inner() { + std::cout << __func__ << ':' << std::endl; + std::cout << "sizeof(Inner): " << sizeof(Inner) << std::endl; // 1 + std::cout << "sizeof(A): " << sizeof(A) << std::endl; // 8 + std::cout << "alignof(Inner): " << alignof(Inner) << std::endl; // 1 + std::cout << "alignof(A): " << alignof(A) << std::endl; // 4 + A obj; + std::cout << "obj.inner.b = " << obj.inner.b << std::endl; + obj.inner.b = true; + std::cout << "obj.inner.b = true" << std::endl; + std::cout << "obj.inner.b = " << obj.inner.b << std::endl; + std::cout << std::endl; +} + +int main() { + struct_sizeof(); + struct_alignof(); + struct_address(); + struct_creation(); + struct_inner(); +} + + diff --git a/03_week/examples/union_examples.cpp b/03_week/examples/union_examples.cpp new file mode 100644 index 00000000..af332dca --- /dev/null +++ b/03_week/examples/union_examples.cpp @@ -0,0 +1,117 @@ +#include +#include +#include + +union ID { + int i; + double d; +}; + +union IBC { + int i; + bool b; + char c; +}; + +union IDBC { + int i; + double d; + bool b; + char c; +}; + +void union_sizeof() { + std::cout << __func__ << ':' << std::endl; + std::cout << "sizeof(ID): " << sizeof(ID) << std::endl; // 8 + std::cout << "sizeof(IBC): " << sizeof(IBC) << std::endl; // 4 + std::cout << "sizeof(IDBC): " << sizeof(IDBC) << std::endl; // 8 + std::cout << std::endl; +} + +void union_alignof() { + std::cout << __func__ << ':' << std::endl; + std::cout << "alignof(ID): " << alignof(ID) << std::endl; // 8 + std::cout << "alignof(IBC): " << alignof(IBC) << std::endl; // 4 + std::cout << "alignof(IDBC): " << alignof(IDBC) << std::endl; // 8 + std::cout << std::endl; +} + +void union_address() { + std::cout << __func__ << ':' << std::endl; + { + ID obj; + obj.i = 42; + std::cout << "union ID: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.i: " << &(obj.i) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.i) << std::endl; + obj.d = 3.14; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + } + { + IBC obj; + obj.i = 42; + std::cout << "union IBC: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.i: " << &(obj.i) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.i) << std::endl; + obj.b = true; + std::cout << "&obj.b: " << &(obj.b) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&(obj.b)) << std::endl; + obj.c = 'c'; + std::cout << "&obj.c: " << static_cast(&(obj.c)) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&(obj.c)) << std::endl; + } + { + IDBC obj; + obj.i = 42; + std::cout << "union IDBC: " << std::endl; + std::cout << "&obj: " << &obj << std::endl; + std::cout << "&obj.i: " << &(obj.i) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.i) << std::endl; + obj.d = 3.14; + std::cout << "&obj.d: " << &(obj.d) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.d) << std::endl; + obj.b = true; + std::cout << "&obj.b: " << &(obj.b) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.b) << std::endl; + obj.c = 'c'; + std::cout << "&obj.c: " << reinterpret_cast(std::addressof(obj.c)) << " distance =" + << reinterpret_cast(&obj) - reinterpret_cast(&obj.c) << std::endl; + } + std::cout << std::endl; +} + +union Color { + uint32_t value; + struct { + uint8_t a; + uint8_t b; + uint8_t g; + uint8_t r; + } components; +}; + +void union_read_inactive() { + std::cout << __func__ << ':' << std::endl; + Color c; + c.value = 0x00FF9955; + + std::cout << "Red: " << +c.components.r << std::endl; // 0 + std::cout << "Green: " << +c.components.g << std::endl; // 255 + std::cout << "Blue: " << +c.components.b << std::endl; // 153 + std::cout << "Alpha: " << +c.components.a << std::endl; // 85 + std::cout << std::endl; +} + + + +int main() { + union_sizeof(); + union_alignof(); + union_address(); + union_read_inactive(); +} + + diff --git a/03_week/examples/vector_examples.cpp b/03_week/examples/vector_examples.cpp new file mode 100644 index 00000000..42afa72f --- /dev/null +++ b/03_week/examples/vector_examples.cpp @@ -0,0 +1,89 @@ +#include +#include + +void vector_init() { + std::cout << __func__ << ':' << std::endl; + std::vector v1; // empty + std::vector v2(v1); // copy ctor from other vector + std::vector v3 = v1; // copy ctor from other vector + // ctor + std::vector v4(5); // 5 elemets with zero value + std::vector v5(5, 2); // 5 elements equal 2 + // initializer list + std::vector v6{1, 2, 4, 5}; // with elements 1, 2, 4, 5 + std::vector v7 = {1, 2, 3, 5}; // with elements 1, 2, 3, 5 + // iterators + std::vector v8(v7.begin(), v7.end()); // same as v7 + std::cout << std::endl; +} + +void vector_reallocation() { + std::cout << __func__ << ':' << std::endl; + std::vector v; + size_t capacity = v.capacity(); + + std::cout << v.data() << std::endl; // int* (address) + std::cout << v.size() << ' ' << v.capacity() << std::endl; + for (int i = 0; i < 1000; ++i) { + v.push_back(i); + if (capacity < v.capacity()) { + capacity = v.capacity(); + + std::cout << v.data() << std::endl; // int* (address) + std::cout << v.size() << ' ' << v.capacity() << std::endl; + } + } + std::cout << std::endl; +} + +void vector_iterating() { + std::cout << __func__ << ':' << std::endl; + + std::vector v = {1, 2, 3, 5}; + std::cout << "range_based for:" << std::endl; + for (auto vi : v) { + std::cout << vi << " "; + } + std::cout << std::endl; + + std::cout << "using [idx]:" << std::endl; + for (size_t i = 0; i < v.size(); ++i) { + std::cout << v[i] << " "; + } + std::cout << std::endl; + + std::cout << "forward iterating:" << std::endl; + for (auto it = v.begin(); it != v.end(); ++it) { + std::cout << *it << " "; + } + std::cout << std::endl; + + std::cout << "reverse iterating:" << std::endl; + for (auto it = v.rbegin(); it != v.rend(); ++it) { + std::cout << *it << " "; + } + std::cout << std::endl; + + std::cout << std::endl; +} + +void vector_reserve() { + std::cout << __func__ << ':' << std::endl; + std::vector v; + v.reserve(100); + for (size_t i = 0; i < 100; ++i) { + v.push_back(i); + } + std::cout << std::endl; + + std::cout << std::endl; +} + +int main() { + vector_init(); + vector_reallocation(); + vector_iterating(); + vector_reserve(); +} + + diff --git a/03_week/tasks/CMakeLists.txt b/03_week/tasks/CMakeLists.txt new file mode 100644 index 00000000..e240c8ea --- /dev/null +++ b/03_week/tasks/CMakeLists.txt @@ -0,0 +1,9 @@ +add_subdirectory(data_stats) +add_subdirectory(unique) +add_subdirectory(range) +add_subdirectory(minmax) +add_subdirectory(find_all) +add_subdirectory(os_overload) +add_subdirectory(easy_compare) +add_subdirectory(filter) +add_subdirectory(enum_operators) \ No newline at end of file diff --git a/03_week/tasks/data_stats/CMakeLists.txt b/03_week/tasks/data_stats/CMakeLists.txt new file mode 100644 index 00000000..08a1ec38 --- /dev/null +++ b/03_week/tasks/data_stats/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_data_stats test.cpp) \ No newline at end of file diff --git a/03_week/tasks/data_stats/README.md b/03_week/tasks/data_stats/README.md new file mode 100644 index 00000000..d2580e59 --- /dev/null +++ b/03_week/tasks/data_stats/README.md @@ -0,0 +1,13 @@ +[average]: https://en.wikipedia.org/wiki/Average +[standard deviation]: https://en.wikipedia.org/wiki/Standard_deviation + +# Статистика данных + +Необходимо реализовать функцию `CalculateDataStats`, которая принимает на вход +контейнер `std::vector` и возвращает структуру `DataStats`, содержащую +среднее значение ([average]) и стандартное отклонение ([standard deviation]). + +## Примечание + +- Запрещено использовать алгоритмы из `` +- Рекомендуется решить задачу в один проход по контейнеру \ No newline at end of file diff --git a/03_week/tasks/data_stats/data_stats.cpp b/03_week/tasks/data_stats/data_stats.cpp new file mode 100644 index 00000000..b941c211 --- /dev/null +++ b/03_week/tasks/data_stats/data_stats.cpp @@ -0,0 +1,11 @@ +#include + + +struct DataStats { + double avg = 0.0; + double sd = 0.0; +}; + +/* return_type */ CalculateDataStats(/* args */) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/03_week/tasks/data_stats/test.cpp b/03_week/tasks/data_stats/test.cpp new file mode 100644 index 00000000..7061f5f4 --- /dev/null +++ b/03_week/tasks/data_stats/test.cpp @@ -0,0 +1,80 @@ +#include + +#include +#include + +#include "data_stats.cpp" + +constexpr double EPSILON = 1e-6; + +TEST(DataStatsTest, EmptyVector) { + std::vector empty_vec; + DataStats stats = CalculateDataStats(empty_vec); + + EXPECT_DOUBLE_EQ(stats.avg, 0.0); + EXPECT_DOUBLE_EQ(stats.sd, 0.0); +} + +TEST(DataStatsTest, SingleElement) { + std::vector vec = {42}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 42.0); + EXPECT_DOUBLE_EQ(stats.sd, 0.0); +} + +TEST(DataStatsTest, TwoElements) { + std::vector vec = {10, 20}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 15.0); + EXPECT_DOUBLE_EQ(stats.sd, 5.0); +} + +TEST(DataStatsTest, AllSameElements) { + std::vector vec = {7, 7, 7, 7, 7}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 7.0); + EXPECT_DOUBLE_EQ(stats.sd, 0.0); +} + +TEST(DataStatsTest, PositiveNumbers) { + std::vector vec = {1, 2, 3, 4, 5}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 3.0); + EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); +} + +TEST(DataStatsTest, NegativeNumbers) { + std::vector vec = {-5, -4, -3, -2, -1}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, -3.0); + EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); +} + +TEST(DataStatsTest, MixedPositiveNegative) { + std::vector vec = {-2, -1, 0, 1, 2}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 0.0); + EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); +} + +TEST(DataStatsTest, ConstCorrectness) { + const std::vector vec = {-2, -1, 0, 1, 2}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 0.0); + EXPECT_NEAR(stats.sd, std::sqrt(2.0), EPSILON); +} + +TEST(DataStatsTest, LargeNumbers) { + std::vector vec = {50000, 60000, 70000}; + DataStats stats = CalculateDataStats(vec); + + EXPECT_DOUBLE_EQ(stats.avg, 60000.0); + EXPECT_NEAR(stats.sd, std::sqrt(200000000.0 / 3.0), EPSILON); +} \ No newline at end of file diff --git a/03_week/tasks/easy_compare/CMakeLists.txt b/03_week/tasks/easy_compare/CMakeLists.txt new file mode 100644 index 00000000..f1c0b634 --- /dev/null +++ b/03_week/tasks/easy_compare/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_easy_compare test.cpp) \ No newline at end of file diff --git a/03_week/tasks/easy_compare/README.md b/03_week/tasks/easy_compare/README.md new file mode 100644 index 00000000..11b1e3f1 --- /dev/null +++ b/03_week/tasks/easy_compare/README.md @@ -0,0 +1,25 @@ +# Оператор сравнения + +Необходимо реализовать перегрузку оператор сравнения для структуры `Date`. +Операторы сравнения для структуры `Date` должен соответствовать обычной логике. + +Необходимо реализовать перегрузку операторов сравнения на меньше и на равно +для структуры `StudentInfo`. Сравнение производится для ранжирования участников +олимпиады, поэтому есть особые правила. + +Две структуры равны, если равны оценки и равны баллы. + +Сравнение на меньше происходит в следующем порядке: + +1. Сравнивается оценка `mark`. Высшая оценка в приоритете (`Z` < `D` < `C` < `B` < `A`). +1. Сравниваются баллы `score`. Больший балл в приоритете (80 < 100). +1. Сравнивается курс обучения `course`. Менее опытные в приоритете (4 < 3). +1. Сравнивается дата рождения, сначала год, затем месяц, затем день. + Более молодые в приоритете. + +Сравнение начинается с первого пункта и продолжается если элементы равны. + +## Примечание + +- Удобно воспользоваться функцией `std::tie` +- В задаче гарантируется корректность данных diff --git a/03_week/tasks/easy_compare/easy_compare.cpp b/03_week/tasks/easy_compare/easy_compare.cpp new file mode 100644 index 00000000..dd5cb7f6 --- /dev/null +++ b/03_week/tasks/easy_compare/easy_compare.cpp @@ -0,0 +1,16 @@ +#include + + +struct Date { + unsigned year; + unsigned month; + unsigned day; +}; + +struct StudentInfo { + size_t id; + char mark; + int score; + unsigned course; + Date birth_date; +}; \ No newline at end of file diff --git a/03_week/tasks/easy_compare/test.cpp b/03_week/tasks/easy_compare/test.cpp new file mode 100644 index 00000000..1701e7d6 --- /dev/null +++ b/03_week/tasks/easy_compare/test.cpp @@ -0,0 +1,269 @@ +#include + +#include +#include + +#include "easy_compare.cpp" + + +TEST(DateTest, DefaultCtor) { + Date date; + EXPECT_EQ(date.year, 0u); + EXPECT_EQ(date.month, 0u); + EXPECT_EQ(date.day, 0u); +} + +TEST(DateTest, ParameterizedCtor) { + Date date{2025, 12, 31}; + EXPECT_EQ(date.year, 2025u); + EXPECT_EQ(date.month, 12u); + EXPECT_EQ(date.day, 31u); +} + +TEST(DateTest, EqualityOperator) { + EXPECT_TRUE(Date({2007, 1, 1}) == Date({2007, 1, 1})); + EXPECT_FALSE(Date({2007, 1, 1}) == Date({2007, 1, 2})); + EXPECT_FALSE(Date({2007, 1, 1}) == Date({2007, 2, 1})); + EXPECT_FALSE(Date({2007, 1, 1}) == Date({2006, 1, 1})); +} + +TEST(DateTest, LessThanOperator) { + Date d1(2007, 1, 1); + Date d2(2007, 1, 2); + Date d3(2007, 2, 1); + Date d4(2008, 1, 1); + + EXPECT_TRUE(d1 < d2); + EXPECT_TRUE(d1 < d3); + EXPECT_TRUE(d1 < d4); + EXPECT_TRUE(d2 < d3); + EXPECT_TRUE(d2 < d4); + EXPECT_TRUE(d3 < d4); + + EXPECT_FALSE(d1 < d1); + EXPECT_FALSE(d2 < d1); + EXPECT_FALSE(d3 < d1); + EXPECT_FALSE(d4 < d1); + EXPECT_FALSE(d3 < d2); + EXPECT_FALSE(d4 < d3); +} + +TEST(DateTest, FullComparisonOperators) { + Date d1(2000, 1, 1); + Date d2(2000, 1, 2); + + EXPECT_TRUE(d1 != d2); + EXPECT_FALSE(d1 != d1); + + EXPECT_FALSE(d2 <= d1); + EXPECT_TRUE(d1 <= d2); + EXPECT_FALSE(d1 >= d2); + EXPECT_TRUE(d2 >= d1); + EXPECT_FALSE(d1 > d2); + EXPECT_TRUE(d2 > d1); + + EXPECT_TRUE(d1 >= d1); + EXPECT_TRUE(d1 <= d1); +} + +TEST(StudentInfoTest, EqualityOperator) { + StudentInfo s1{1, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo s2{2, 'A', 100, 2, Date{1999, 12, 31}}; + StudentInfo s3{3, 'B', 100, 1, Date{2000, 1, 1}}; + StudentInfo s4{4, 'A', 90, 1, Date{2000, 1, 1}}; + + EXPECT_TRUE(s1 == s2); + EXPECT_FALSE(s1 == s3); + EXPECT_FALSE(s1 == s4); +} + +TEST(StudentInfoTest, NotEqualOperator) { + StudentInfo s1{1, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo s2{4, 'B', 100, 1, Date{2000, 1, 1}}; + StudentInfo s4{2, 'A', 90, 1, Date{2000, 1, 1}}; + + EXPECT_TRUE(s1 != s2); + EXPECT_FALSE(s1 != s1); + EXPECT_TRUE(s1 != s4); +} + +TEST(StudentInfoTest, CompareByMark) { + StudentInfo z_student{1, 'Z', 10, 1, Date{2000, 1, 1}}; + StudentInfo d_student{2, 'D', 20, 2, Date{2001, 1, 1}}; + StudentInfo c_student{3, 'C', 30, 3, Date{2002, 1, 1}}; + StudentInfo b_student{2, 'B', 40, 4, Date{2003, 1, 1}}; + StudentInfo a_student{5, 'A', 50, 5, Date{2004, 1, 1}}; + + EXPECT_TRUE(z_student < d_student); + EXPECT_TRUE(z_student < c_student); + EXPECT_TRUE(z_student < b_student); + EXPECT_TRUE(z_student < a_student); + + EXPECT_TRUE(d_student < c_student); + EXPECT_TRUE(d_student < b_student); + EXPECT_TRUE(d_student < a_student); + + EXPECT_TRUE(c_student < b_student); + EXPECT_TRUE(c_student < a_student); + + EXPECT_TRUE(b_student < a_student); + + EXPECT_FALSE(a_student < z_student); + EXPECT_FALSE(a_student < d_student); + EXPECT_FALSE(a_student < c_student); + EXPECT_FALSE(a_student < b_student); +} + +TEST(StudentInfoTest, CompareByScore) { + StudentInfo high_score{3, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo medium_score{2, 'A', 80, 2, Date{2001, 1, 1}}; + StudentInfo low_score{7, 'A', 60, 3, Date{2002, 1, 1}}; + + EXPECT_TRUE(low_score < medium_score); + EXPECT_TRUE(medium_score < high_score); + EXPECT_TRUE(low_score < high_score); + + EXPECT_FALSE(high_score < medium_score); + EXPECT_FALSE(high_score < low_score); + EXPECT_FALSE(medium_score < low_score); +} + +TEST(StudentInfoTest, CompareByCourse) { + StudentInfo first_year{1, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo second_year{3, 'A', 100, 2, Date{2000, 1, 1}}; + StudentInfo third_year{2, 'A', 100, 3, Date{2000, 1, 1}}; + StudentInfo fourth_year{4, 'A', 100, 4, Date{2000, 1, 1}}; + + EXPECT_TRUE(fourth_year < third_year); + EXPECT_TRUE(fourth_year < second_year); + EXPECT_TRUE(fourth_year < first_year); + + EXPECT_TRUE(third_year < second_year); + EXPECT_TRUE(third_year < first_year); + + EXPECT_TRUE(second_year < first_year); + + EXPECT_FALSE(first_year < second_year); + EXPECT_FALSE(first_year < third_year); + EXPECT_FALSE(first_year < fourth_year); + EXPECT_FALSE(third_year < fourth_year); +} + +TEST(StudentInfoTest, CompareByBirthDate) { + StudentInfo young{1, 'A', 100, 1, Date{2001, 1, 1}}; + StudentInfo middle{2, 'A', 100, 1, Date{2000, 6, 15}}; + StudentInfo old{3, 'A', 100, 1, Date{1999, 12, 31}}; + + EXPECT_TRUE(old < middle); + EXPECT_TRUE(middle < young); + EXPECT_TRUE(old < young); + + EXPECT_FALSE(young < middle); + EXPECT_FALSE(young < old); + EXPECT_FALSE(middle < old); +} + +TEST(StudentInfoTest, CompareByDateComponents) { + StudentInfo year1{1, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo year2{2, 'A', 100, 1, Date{2001, 1, 1}}; + + StudentInfo month1{4, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo month2{3, 'A', 100, 1, Date{2000, 2, 1}}; + + StudentInfo day1{5, 'A', 100, 1, Date{2000, 1, 1}}; + StudentInfo day2{6, 'A', 100, 1, Date{2000, 1, 2}}; + + EXPECT_TRUE(year1 < year2); + EXPECT_FALSE(year2 < year1); + + EXPECT_TRUE(month1 < month2); + EXPECT_FALSE(month2 < month1); + + EXPECT_TRUE(day1 < day2); + EXPECT_FALSE(day2 < day1); +} + +TEST(StudentInfoTest, ComplexComparisons) { + StudentInfo a_student{1, 'A', 50, 4, Date{1990, 1, 1}}; + StudentInfo b_student{2, 'B', 100, 1, Date{2005, 1, 1}}; + + EXPECT_TRUE(b_student < a_student); + EXPECT_FALSE(a_student < b_student); + + StudentInfo high_score{4, 'B', 100, 4, Date{1990, 1, 1}}; + StudentInfo low_score{3, 'B', 50, 1, Date{2005, 1, 1}}; + + EXPECT_TRUE(low_score < high_score); + EXPECT_FALSE(high_score < low_score); + + StudentInfo first_year{5, 'C', 80, 1, Date{1995, 1, 1}}; + StudentInfo fourth_year{6, 'C', 80, 4, Date{2005, 1, 1}}; + + EXPECT_TRUE(fourth_year < first_year); + EXPECT_FALSE(first_year < fourth_year); + + StudentInfo older{8, 'D', 70, 2, Date{1998, 1, 1}}; + StudentInfo younger{7, 'D', 70, 2, Date{2000, 1, 1}}; + + EXPECT_TRUE(older < younger); + EXPECT_FALSE(younger < older); + + StudentInfo older_month{8, 'D', 70, 2, Date{2007, 1, 31}}; + StudentInfo younger_month{7, 'D', 70, 2, Date{2007, 2, 1}}; + + EXPECT_TRUE(older_month < younger_month); + EXPECT_FALSE(younger_month < older_month); + + StudentInfo older_day{8, 'D', 70, 2, Date{2007, 1, 1}}; + StudentInfo younger_day{7, 'D', 70, 2, Date{2007, 1, 2}}; + + EXPECT_TRUE(older_day < younger_day); + EXPECT_FALSE(younger_day < older_day); +} + +class StudentSortTest : public ::testing::Test { +protected: + void SetUp() override { + students_expected = { + {7, 'Z', 100, 1, Date{2018, 1, 1}}, + {6, 'D', 120, 2, Date{2017, 1, 1}}, + {5, 'C', 140, 3, Date{2016, 1, 1}}, + {4, 'B', 150, 5, Date{2017, 1, 1}}, + {8, 'A', 1999, 2, Date{2003, 1, 1}}, + {9, 'A', 1999, 1, Date{2003, 1, 1}}, + {3, 'A', 1999, 1, Date{2003, 2, 1}}, + {2, 'A', 1999, 1, Date{2004, 2, 1}}, + {1, 'A', 2000, 5, Date{2000, 1, 1}}, + {10, 'A', 2000, 4, Date{2000, 1, 1}}, + {11, 'A', 2000, 4, Date{2000, 1, 2}} + }; + } + + std::vector students_expected; +}; + +TEST_F(StudentSortTest, SortStudents) { + std::vector students = { + {1, 'A', 2000, 5, Date{2000, 1, 1}}, + {2, 'A', 1999, 1, Date{2004, 2, 1}}, + {3, 'A', 1999, 1, Date{2003, 2, 1}}, + {4, 'B', 150, 5, Date{2017, 1, 1}}, + {5, 'C', 140, 3, Date{2016, 1, 1}}, + {6, 'D', 120, 2, Date{2017, 1, 1}}, + {7, 'Z', 100, 1, Date{2018, 1, 1}}, + {8, 'A', 1999, 2, Date{2003, 1, 1}}, + {9, 'A', 1999, 1, Date{2003, 1, 1}}, + {10, 'A', 2000, 4, Date{2000, 1, 1}}, + {11, 'A', 2000, 4, Date{2000, 1, 2}} + }; + + std::sort(students.begin(), students.end()); + + for (size_t i = 0; i < students.size(); ++i) { + EXPECT_EQ(students[i].id, students_expected[i].id); + EXPECT_EQ(students[i].mark, students_expected[i].mark); + EXPECT_EQ(students[i].score, students_expected[i].score); + EXPECT_EQ(students[i].course, students_expected[i].course); + EXPECT_EQ(students[i].birth_date, students_expected[i].birth_date); + } +} \ No newline at end of file diff --git a/03_week/tasks/enum_operators/CMakeLists.txt b/03_week/tasks/enum_operators/CMakeLists.txt new file mode 100644 index 00000000..efb136e1 --- /dev/null +++ b/03_week/tasks/enum_operators/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_enum_operators test.cpp) \ No newline at end of file diff --git a/03_week/tasks/enum_operators/README.md b/03_week/tasks/enum_operators/README.md new file mode 100644 index 00000000..59f6ff0d --- /dev/null +++ b/03_week/tasks/enum_operators/README.md @@ -0,0 +1,19 @@ +# Переопределение побитовых операторов + +Необходимо реализовать перегрузку побитовых операторов для перечисления `CheckFlags`: + +- `operator|` - возвращает результат побитового ИЛИ двух перечислений +- `operator&` - возвращает `true`, если все активные флаги одного операнда + присутствуют у другого операнда, иначе возвращает `false`. В случае когда у одного + из операндов нет активных флагов возвращает `false` +- `operator^` - возвращает результат исключающего ИЛИ двух перечислений. +- `operator~` - инвертирует установленные флаги (для `NONE` результат будет `ALL`) +- `operator<<` - выводит через запятую в произвольный поток вывода имена включенных + флагов проверки + +## Ограничения + +Все операторы должны гарантировать, что результат не содержит флагов вне диапазона +`[NONE, ALL]`, даже если входные данные превышают диапазон. Флаги вне диапазона +игнорируются. + \ No newline at end of file diff --git a/03_week/tasks/enum_operators/enum_operators.cpp b/03_week/tasks/enum_operators/enum_operators.cpp new file mode 100644 index 00000000..a539be38 --- /dev/null +++ b/03_week/tasks/enum_operators/enum_operators.cpp @@ -0,0 +1,33 @@ +#include +#include + +enum class CheckFlags : uint8_t { + NONE = 0, + TIME = (1 << 0), + DATE = (1 << 1), + USER = (1 << 2), + CERT = (1 << 3), + KEYS = (1 << 4), + DEST = (1 << 5), + ALL = TIME | DATE | USER | CERT | KEYS | DEST +}; + +/* return_type */ operator|(/* args */) { + throw std::runtime_error{"Not implemented"}; +} + +/* return_type */ operator&(/* args */) { + throw std::runtime_error{"Not implemented"}; +} + +/* return_type */ operator^(/* args */) { + throw std::runtime_error{"Not implemented"}; +} + +/* return_type */ operator~(/* args */) { + throw std::runtime_error{"Not implemented"}; +} + +/* return_type */ operator<<(/* args */) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/03_week/tasks/enum_operators/test.cpp b/03_week/tasks/enum_operators/test.cpp new file mode 100644 index 00000000..caf96643 --- /dev/null +++ b/03_week/tasks/enum_operators/test.cpp @@ -0,0 +1,226 @@ +#include + +#include +#include +#include + +#include "enum_operators.cpp" + + +TEST(EnumOperatorsTest, UnderlyingType) { + static_assert(std::is_same_v, uint8_t>, + "CheckFlags must use uint8_t as underlying type"); + EXPECT_EQ(sizeof(CheckFlags), sizeof(uint8_t)); + EXPECT_EQ(alignof(CheckFlags), alignof(uint8_t)); +} + +TEST(EnumOperatorsTest, BitwiseOr) { + EXPECT_EQ(CheckFlags::TIME | CheckFlags::DATE, static_cast( + static_cast(CheckFlags::TIME) + static_cast(CheckFlags::DATE))); + EXPECT_EQ(CheckFlags::TIME | CheckFlags::DEST | CheckFlags::USER, static_cast( + static_cast(CheckFlags::TIME) + static_cast(CheckFlags::DEST) + + static_cast(CheckFlags::USER))); + EXPECT_EQ(CheckFlags::TIME | CheckFlags::TIME, CheckFlags::TIME); + EXPECT_EQ(CheckFlags::NONE | CheckFlags::TIME, CheckFlags::TIME); + EXPECT_EQ(CheckFlags::ALL | CheckFlags::TIME, CheckFlags::ALL); +} + +TEST(EnumOperatorsTest, BitwiseOrOutside) { + EXPECT_EQ(static_cast(0xFF) | CheckFlags::NONE, CheckFlags::ALL); + uint8_t invalid = 0x40; + invalid += static_cast(CheckFlags::CERT); + EXPECT_EQ(static_cast(invalid) | CheckFlags::KEYS, + static_cast(static_cast(CheckFlags::CERT) + static_cast(CheckFlags::KEYS))); +} + +TEST(EnumOperatorsTest, BitwiseAnd) { + CheckFlags flags = CheckFlags::TIME | CheckFlags::DATE; + + EXPECT_TRUE(flags & CheckFlags::TIME); + EXPECT_TRUE(flags & CheckFlags::DATE); + EXPECT_FALSE(flags & CheckFlags::USER); + + EXPECT_TRUE(CheckFlags::ALL & CheckFlags::TIME); + EXPECT_TRUE(CheckFlags::TIME & CheckFlags::ALL); + EXPECT_TRUE(CheckFlags::DATE & CheckFlags::ALL); + EXPECT_TRUE(CheckFlags::ALL & CheckFlags::ALL); + + EXPECT_FALSE(CheckFlags::DATE & CheckFlags::NONE); + EXPECT_FALSE(CheckFlags::NONE & CheckFlags::DATE); + EXPECT_FALSE(CheckFlags::NONE & CheckFlags::ALL); + EXPECT_FALSE(CheckFlags::ALL & CheckFlags::NONE); + EXPECT_FALSE(CheckFlags::NONE & CheckFlags::NONE); +} + +TEST(EnumOperatorsTest, BitwiseAndComplex) { + CheckFlags flags = CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER; + + EXPECT_TRUE(flags & (CheckFlags::TIME | CheckFlags::DATE)); + EXPECT_TRUE(flags & (CheckFlags::USER | CheckFlags::DATE)); + EXPECT_TRUE((CheckFlags::TIME | CheckFlags::DATE) & flags); + EXPECT_TRUE((CheckFlags::USER | CheckFlags::DATE) & flags); + + EXPECT_FALSE(flags & CheckFlags::CERT); + EXPECT_FALSE(flags & (CheckFlags::TIME | CheckFlags::CERT)); + EXPECT_FALSE(flags & (CheckFlags::DATE | CheckFlags::CERT)); + EXPECT_FALSE(flags & (CheckFlags::DATE | CheckFlags::TIME | CheckFlags::CERT)); + + EXPECT_FALSE(flags & CheckFlags::NONE); + EXPECT_FALSE(CheckFlags::NONE & flags); + + EXPECT_TRUE(flags & flags); + EXPECT_TRUE(flags & (CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER | CheckFlags::CERT)); + EXPECT_TRUE((CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER | CheckFlags::CERT) & flags); +} + +TEST(EnumOperatorsTest, BitwiseAndOutside) { + EXPECT_FALSE(static_cast(0xC0) & static_cast(0xC0)); + EXPECT_FALSE(static_cast(0xC1) & static_cast(0xC2)); + EXPECT_FALSE(static_cast(0xC0) & CheckFlags::ALL); + EXPECT_TRUE(static_cast(0xC1) & static_cast(0x03)); +} + +TEST(EnumOperatorsTest, BitwiseXor) { + CheckFlags flags1 = CheckFlags::TIME | CheckFlags::DATE; + CheckFlags flags2 = CheckFlags::TIME | CheckFlags::USER; + + EXPECT_EQ(flags1 ^ flags2, CheckFlags::DATE | CheckFlags::USER); + EXPECT_EQ(flags2 ^ flags1, CheckFlags::DATE | CheckFlags::USER); + EXPECT_EQ(flags1 ^ flags1, CheckFlags::NONE); + EXPECT_EQ(flags1 ^ CheckFlags::NONE, flags1); + EXPECT_EQ(CheckFlags::NONE ^ flags2, flags2); + EXPECT_EQ(flags1 ^ CheckFlags::ALL, CheckFlags::USER | CheckFlags::CERT | CheckFlags::KEYS | CheckFlags::DEST); + EXPECT_EQ(CheckFlags::ALL ^ flags2, CheckFlags::DATE | CheckFlags::CERT | CheckFlags::KEYS | CheckFlags::DEST); +} + +TEST(EnumOperatorsTest, BitwiseXorOutside) { + EXPECT_EQ(static_cast(0xC0) ^ static_cast(0x80), CheckFlags::NONE); + EXPECT_EQ(static_cast(0xC1) ^ static_cast(0xC2), CheckFlags::TIME | CheckFlags::DATE); + EXPECT_EQ(static_cast(0xC0) ^ CheckFlags::ALL,CheckFlags::ALL); + EXPECT_EQ(static_cast(0xFF) ^ CheckFlags::ALL, CheckFlags::NONE); +} + +TEST(EnumOperatorsTest, BitwiseNot) { + EXPECT_EQ(~(CheckFlags::NONE), CheckFlags::ALL); + EXPECT_EQ(~(CheckFlags::ALL), CheckFlags::NONE); + + CheckFlags not_time = ~CheckFlags::TIME; + EXPECT_NE(not_time, CheckFlags::NONE); + EXPECT_NE(not_time, CheckFlags::TIME); + EXPECT_FALSE(not_time & CheckFlags::TIME); + + CheckFlags flags = CheckFlags::TIME | CheckFlags::DATE; + EXPECT_EQ(~(~flags), flags); +} + +TEST(EnumOperatorsTest, OutputOperator) { + std::stringstream ss; + + ss << CheckFlags::NONE; + EXPECT_EQ(ss.str(), "NONE"); + ss.str(""); + + ss << CheckFlags::ALL; + EXPECT_EQ(ss.str(), "TIME, DATE, USER, CERT, KEYS, DEST"); + ss.str(""); + + ss << CheckFlags::DEST; + EXPECT_EQ(ss.str(), "DEST"); + ss.str(""); + + ss << (CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER); + std::string result = ss.str(); + EXPECT_EQ(result, "TIME, DATE, USER"); +} + +TEST(EnumOperatorsTest, OutputOperatorOutside) { + std::stringstream ss; + + ss << static_cast(0xC1); + EXPECT_EQ(ss.str(), "TIME"); + ss.str(""); + + ss << static_cast(0xFF); + EXPECT_EQ(ss.str(), "TIME, DATE, USER, CERT, KEYS, DEST"); + ss.str(""); + + ss << static_cast(0x80); + EXPECT_EQ(ss.str(), "NONE"); + ss.str(""); +} + +TEST(EnumOperatorsTest, OutputOperatorChainUse) { + std::stringstream ss; + ss << CheckFlags::CERT << " " << CheckFlags::KEYS << " " << CheckFlags::DEST; + std::string result = ss.str(); + EXPECT_EQ(result, "CERT KEYS DEST"); +} + + +TEST(EnumOperatorsTest, Sanitization) { + uint8_t raw_value = 0xFF; + CheckFlags flags_with_invalid = static_cast(raw_value); + + CheckFlags or_result = flags_with_invalid | CheckFlags::NONE; + EXPECT_EQ(or_result, CheckFlags::ALL); + + EXPECT_TRUE(flags_with_invalid & CheckFlags::ALL); + + CheckFlags xor_result = flags_with_invalid ^ CheckFlags::ALL; + EXPECT_EQ(xor_result, CheckFlags::NONE); + std::cerr << flags_with_invalid << std::endl; + + CheckFlags not_result = ~flags_with_invalid; + std::cerr << not_result << std::endl; + EXPECT_EQ(not_result, CheckFlags::NONE); +} + +TEST(EnumOperatorsTest, CombinedOperations) { + CheckFlags base = CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER; + + CheckFlags added = base | CheckFlags::CERT; + EXPECT_TRUE(added & CheckFlags::CERT); + + CheckFlags removed = added ^ CheckFlags::DATE; + EXPECT_FALSE(removed & CheckFlags::DATE); + EXPECT_TRUE(removed & CheckFlags::TIME); + EXPECT_TRUE(removed & CheckFlags::USER); + EXPECT_TRUE(removed & CheckFlags::CERT); + + CheckFlags inverse = ~removed; + EXPECT_FALSE(inverse & CheckFlags::TIME); + EXPECT_FALSE(inverse & CheckFlags::USER); + EXPECT_FALSE(inverse & CheckFlags::CERT); + EXPECT_TRUE(inverse & CheckFlags::DATE); + EXPECT_TRUE(inverse & CheckFlags::KEYS); + EXPECT_TRUE(inverse & CheckFlags::DEST); +} + +TEST(EnumOperatorsTest, OperationWithConst) { + const CheckFlags base = CheckFlags::TIME | CheckFlags::DATE | CheckFlags::USER; + + const CheckFlags added_lhs = base | CheckFlags::CERT; + const CheckFlags added_rhs = CheckFlags::CERT | base; + EXPECT_TRUE(added_lhs & CheckFlags::CERT); + EXPECT_TRUE(CheckFlags::CERT & added_rhs); + + const CheckFlags removed_lhs = added_lhs ^ CheckFlags::DATE; + const CheckFlags removed_rhs = CheckFlags::DATE ^ added_lhs; + EXPECT_FALSE(removed_lhs & CheckFlags::DATE); + EXPECT_TRUE(removed_lhs & CheckFlags::TIME); + EXPECT_TRUE(CheckFlags::USER & removed_lhs); + EXPECT_TRUE(CheckFlags::CERT & removed_lhs); + + EXPECT_FALSE(removed_rhs & CheckFlags::DATE); + EXPECT_TRUE(removed_rhs & CheckFlags::TIME); + EXPECT_TRUE(CheckFlags::USER & removed_rhs); + EXPECT_TRUE(CheckFlags::CERT & removed_rhs); + + const CheckFlags inverse = ~removed_lhs; + EXPECT_FALSE(inverse & CheckFlags::TIME); + EXPECT_FALSE(inverse & CheckFlags::USER); + EXPECT_FALSE(inverse & CheckFlags::CERT); + EXPECT_TRUE(inverse & CheckFlags::DATE); + EXPECT_TRUE(inverse & CheckFlags::KEYS); + EXPECT_TRUE(inverse & CheckFlags::DEST); +} \ No newline at end of file diff --git a/03_week/tasks/filter/CMakeLists.txt b/03_week/tasks/filter/CMakeLists.txt new file mode 100644 index 00000000..e5f4644d --- /dev/null +++ b/03_week/tasks/filter/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_filter test.cpp) \ No newline at end of file diff --git a/03_week/tasks/filter/README.md b/03_week/tasks/filter/README.md new file mode 100644 index 00000000..4cd5bace --- /dev/null +++ b/03_week/tasks/filter/README.md @@ -0,0 +1,11 @@ +# Фильтрация данных + +Необходимо реализовать функцию `Filter`, которая принимает `std::vector` +и указатель на функцию предикат, и оставляет в контейнере элементы, +удовлетворяющие предикату, в исходном порядке. + +## Примечание + +- Запрещено использовать функции из `` +- Алгоритм должен работать за линейное время `O(n)` (за один проход) +- Постарайтесь не выделять дополнительную память, дополнительная память `O(1)` \ No newline at end of file diff --git a/03_week/tasks/filter/filter.cpp b/03_week/tasks/filter/filter.cpp new file mode 100644 index 00000000..6648cb39 --- /dev/null +++ b/03_week/tasks/filter/filter.cpp @@ -0,0 +1,6 @@ +#include + + +/* return_type */ Filter(/* args */) { + throw std::runtime_error{"Not implemented"}; +} \ No newline at end of file diff --git a/03_week/tasks/filter/test.cpp b/03_week/tasks/filter/test.cpp new file mode 100644 index 00000000..2ad4ff38 --- /dev/null +++ b/03_week/tasks/filter/test.cpp @@ -0,0 +1,172 @@ +#include + +#include +#include +#include +#include +#include + +#include "filter.cpp" + + +bool IsEven(int x) { + return x % 2 == 0; +} + +bool IsOdd(int x) { + return x % 2; +} + +bool IsPositive(int x) { + return x > 0; +} + +bool AlwaysFalse(int) { + return false; +} + +TEST(FilterTest, EmptyVector) { + std::vector empty_vec; + Filter(empty_vec, IsEven); + EXPECT_TRUE(empty_vec.empty()); +} + +TEST(FilterTest, AllElementsFalse) { + std::vector vec = {1, -3, 5, -7, 9}; + Filter(vec, IsEven); + EXPECT_TRUE(vec.empty()); +} + +TEST(FilterTest, NullptrPredicate) { + std::vector vec = {1, 2, 3, 4, 5}; + size_t expected_size = vec.size(); + EXPECT_NO_THROW(Filter(vec, nullptr)); + EXPECT_EQ(vec.size(), expected_size); +} + +TEST(FilterTest, SingleElementTrue) { + std::vector vec = {18}; + Filter(vec, IsEven); + EXPECT_EQ(vec.size(), 1); + EXPECT_EQ(vec[0], 18); +} + +TEST(FilterTest, SingleElementFalse) { + std::vector vec = {17}; + Filter(vec, IsEven); + EXPECT_TRUE(vec.empty()); +} + +TEST(FilterTest, AllElementsPass) { + std::vector vec = {2, 4, 6, 8, 10}; + Filter(vec, IsEven); + std::vector expected = {2, 4, 6, 8, 10}; + EXPECT_EQ(vec.size(), expected.size()); + EXPECT_EQ(vec, expected); +} + +TEST(FilterTest, MixedElements) { + std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + Filter(vec, IsEven); + std::vector expected = {2, 4, 6, 8, 10}; + EXPECT_EQ(vec.size(), expected.size()); + EXPECT_EQ(vec, expected); +} + +TEST(FilterTest, NotSortedElements) { + std::vector vec = {10, 2, 3, 4, 5, 7, 6, 8, 9, 1}; + Filter(vec, IsEven); + std::vector expected = {10, 2, 4, 6, 8}; + EXPECT_EQ(vec, expected); +} + +TEST(FilterTest, NotRealocate) { + std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + auto capacity = vec.capacity(); + auto ptr_before = vec.data(); + Filter(vec, IsEven); + EXPECT_EQ(vec.data(), ptr_before); + EXPECT_EQ(vec.capacity(), capacity); +} + +TEST(FilterTest, AllFalsePredicate) { + std::vector vec = {1, 2, 3, 4, 5}; + Filter(vec, AlwaysFalse); + EXPECT_TRUE(vec.empty()); +} + +TEST(FilterTest, LargeVector) { + const size_t SIZE = 1'000'000; + std::vector vec(SIZE); + for (size_t i = 0; i < SIZE; ++i) { + vec[i] = static_cast(i); + } + + Filter(vec, IsEven); + + EXPECT_EQ(vec.size(), SIZE / 2); + + for (size_t i = 0; i < vec.size(); ++i) { + EXPECT_EQ(vec[i], static_cast(i * 2)); + EXPECT_TRUE(IsEven(vec[i])); + } +} + +TEST(FilterTest, ConsecutiveCalls) { + std::vector vec = {1, -2, 3, 4, 5, 6, 7, -8, 9, 10}; + + Filter(vec, IsEven); + Filter(vec, IsEven); + std::vector expected = {-2, 4, 6, -8, 10}; + EXPECT_EQ(vec, expected); + + Filter(vec, IsPositive); + expected = {4, 6, 10}; + EXPECT_EQ(vec, expected); +} + +TEST(FilterTest, BigRandomDataMultipleSeeds) { + const size_t NUM_TESTS = 10; + const size_t VECTOR_SIZE = 1'000'000; + const int MIN_VALUE = -1'000'000; + const int MAX_VALUE = 1'000'000; + + std::random_device rd; + std::mt19937 seed_gen(rd()); + std::uniform_int_distribution seed_dist(0, 100000); + + double erase_duration = 0; + double filter_duration = 0; + for (size_t test_idx = 0; test_idx < NUM_TESTS; ++test_idx) { + unsigned int seed = seed_dist(seed_gen); + std::mt19937 gen(seed); + std::uniform_int_distribution value_dist(MIN_VALUE, MAX_VALUE); + + std::vector test(VECTOR_SIZE); + for (size_t i = 0; i < VECTOR_SIZE; ++i) { + test[i] = value_dist(gen); + } + + auto expected = test; + auto start = std::chrono::high_resolution_clock::now(); + std::erase_if(expected, IsOdd); + auto end = std::chrono::high_resolution_clock::now(); + erase_duration += std::chrono::duration_cast(end - start).count(); + + start = std::chrono::high_resolution_clock::now(); + Filter(test, IsEven); + end = std::chrono::high_resolution_clock::now(); + filter_duration += std::chrono::duration_cast(end - start).count(); + + ASSERT_EQ(test.size(), expected.size()) + << "Test #" << test_idx << " with seed " << seed + << ": size mismatch"; + EXPECT_EQ(test, expected) + << "Test #" << test_idx << " with seed " << seed + << ": content mismatch"; + } + + EXPECT_LE(filter_duration, 1.2 * erase_duration) + << "Function too slow: " + <<"filter_duration = " << filter_duration << " ms, erase_duration = " << erase_duration << " ms\n"; +} \ No newline at end of file diff --git a/03_week/tasks/find_all/CMakeLists.txt b/03_week/tasks/find_all/CMakeLists.txt new file mode 100644 index 00000000..e96cdff7 --- /dev/null +++ b/03_week/tasks/find_all/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_find_all test.cpp) \ No newline at end of file diff --git a/03_week/tasks/find_all/README.md b/03_week/tasks/find_all/README.md new file mode 100644 index 00000000..50475494 --- /dev/null +++ b/03_week/tasks/find_all/README.md @@ -0,0 +1,9 @@ +# Найти все элементы + +Необходимо реализовать функцию `FindAll`, которая принимает на вход контейнер +`std::vector` и указатель на функцию предикат, и возвращает контейнер +позиций всех элементов, удовлетворяющих предикату. + +## Примечание + +- Запрещено использовать функции из `` \ No newline at end of file diff --git a/03_week/tasks/find_all/find_all.cpp b/03_week/tasks/find_all/find_all.cpp new file mode 100644 index 00000000..74f393b2 --- /dev/null +++ b/03_week/tasks/find_all/find_all.cpp @@ -0,0 +1,6 @@ +#include + + +/* return_type */ FindAll(/* args */) { + throw std::runtime_error{"Not implemented"}; +} \ No newline at end of file diff --git a/03_week/tasks/find_all/test.cpp b/03_week/tasks/find_all/test.cpp new file mode 100644 index 00000000..f58dc607 --- /dev/null +++ b/03_week/tasks/find_all/test.cpp @@ -0,0 +1,119 @@ +#include + +#include + +#include "find_all.cpp" + +bool IsEven(int x) { + return x % 2 == 0; +} + +bool IsPositive(int x) { + return x > 0; +} + +bool AlwaysFalse(int) { + return false; +} + +TEST(FindAllTest, EmptyVector) { + std::vector empty_vec; + auto result = FindAll(empty_vec, IsEven); + EXPECT_TRUE(result.empty()); +} + +TEST(FindAllTest, NullptrPredicate) { + std::vector vec = {1, 2, 3, 4, 5}; + auto result = FindAll(vec, nullptr); + EXPECT_TRUE(result.empty()); +} + +TEST(FindAllTest, SingleElementTrue) { + std::vector vec = {18}; + auto result = FindAll(vec, IsEven); + EXPECT_EQ(result.size(), 1); + EXPECT_EQ(result[0], 0); +} + +TEST(FindAllTest, SingleElementFalse) { + std::vector vec = {17}; + auto result = FindAll(vec, IsEven); + EXPECT_TRUE(result.empty()); +} + +TEST(FindAllTest, AllElementsPass) { + std::vector vec = {2, 4, 6, 8, 10}; + auto result = FindAll(vec, IsEven); + + EXPECT_EQ(result.size(), vec.size()); + std::vector expected = {0, 1, 2, 3, 4}; + EXPECT_EQ(result, expected); +} + +TEST(FindAllTest, AllElementsFalse) { + std::vector vec = {1, 3, 5, 7, 9}; + auto result = FindAll(vec, IsEven); + EXPECT_TRUE(result.empty()); +} + +TEST(FindAllTest, MixedElements) { + std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + auto result = FindAll(vec, IsEven); + std::vector expected = {1, 3, 5, 7, 9}; + EXPECT_EQ(result, expected); +} + +TEST(FindAllTest, NotSortedElements) { + std::vector vec = {10, 2, 3, 4, 5, 7, 6, 8, 9, 1}; + auto result = FindAll(vec, IsEven); + std::vector expected = {0, 1, 3, 6, 7}; + EXPECT_EQ(result, expected); +} + +TEST(FindAllTest, AllFalsePredicate) { + std::vector vec = {1, 2, 3, 4, 5}; + auto result = FindAll(vec, AlwaysFalse); + EXPECT_TRUE(result.empty()); +} + +TEST(FindAllTest, LargeVector) { + const size_t SIZE = 1'000'000; + std::vector vec(SIZE); + for (size_t i = 0; i < SIZE; ++i) { + vec[i] = static_cast(i); + } + + auto result = FindAll(vec, IsEven); + + EXPECT_EQ(result.size(), SIZE / 2); + + for (size_t i = 0; i < result.size(); ++i) { + EXPECT_EQ(result[i], i * 2); + EXPECT_TRUE(IsEven(vec[result[i]])); + } +} + +TEST(FindAllTest, CapacityOptimization) { + std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + + auto result = FindAll(vec, IsEven); + EXPECT_EQ(result.capacity(), result.size()); +} + +TEST(FindAllTest, ConsecutiveCalls) { + std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + + auto result1 = FindAll(vec, IsEven); + auto result2 = FindAll(vec, IsEven); + EXPECT_EQ(result1, result2); + + auto result3 = FindAll(vec, IsPositive); + EXPECT_EQ(result3.size(), 10); +} + +TEST(FindAllTest, ConstCorrectness) { + const std::vector vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + auto result = FindAll(vec, IsEven); + std::vector expected = {1, 3, 5, 7, 9}; + EXPECT_EQ(result, expected); +} \ No newline at end of file diff --git a/03_week/tasks/minmax/CMakeLists.txt b/03_week/tasks/minmax/CMakeLists.txt new file mode 100644 index 00000000..a2a33c75 --- /dev/null +++ b/03_week/tasks/minmax/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_minmax test.cpp) \ No newline at end of file diff --git a/03_week/tasks/minmax/README.md b/03_week/tasks/minmax/README.md new file mode 100644 index 00000000..b9067359 --- /dev/null +++ b/03_week/tasks/minmax/README.md @@ -0,0 +1,14 @@ +# Минимум и максимум + +Необходимо реализовать функцию `MinMax`, которая принимает на вход контейнер +`std::vector` и возвращает пару итераторов, указывающих на минимальный +и максимальный элемент контейнера. + +## Примечание + +- Запрещено использовать `std::minmax_element` и другие функции из `` +- Необходимо найти оба элемента за один проход по контейнеру. +- Для пустого контейнера необходимо вернуть пару итераторов на конец контейнера. +- В случае нескольких одинаковых элементов, итератор на минимум должен указывать + на первое вхождение, итератор на максимум на последнее вхождение соответствующих + элементов \ No newline at end of file diff --git a/03_week/tasks/minmax/minmax.cpp b/03_week/tasks/minmax/minmax.cpp new file mode 100644 index 00000000..c2869799 --- /dev/null +++ b/03_week/tasks/minmax/minmax.cpp @@ -0,0 +1,6 @@ +#include + + +/* return_type */ MinMax(/* args */) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/03_week/tasks/minmax/test.cpp b/03_week/tasks/minmax/test.cpp new file mode 100644 index 00000000..03a4bf0a --- /dev/null +++ b/03_week/tasks/minmax/test.cpp @@ -0,0 +1,141 @@ +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "minmax.cpp" + + +TEST(MinMaxTest, EmptyVector) { + std::vector empty_vec; + auto [min_it, max_it] = MinMax(empty_vec); + + EXPECT_EQ(min_it, empty_vec.end()); + EXPECT_EQ(max_it, empty_vec.end()); +} + +TEST(MinMaxTest, SingleElement) { + std::vector vec = {42}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin()); + EXPECT_EQ(max_it, vec.begin()); + EXPECT_EQ(*min_it, 42); + EXPECT_EQ(*max_it, 42); +} + +TEST(MinMaxTest, AllEqualElements) { + std::vector vec = {5, 5, 5, 5, 5}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin()); + EXPECT_EQ(max_it, vec.end() - 1); + EXPECT_EQ(*min_it, 5); + EXPECT_EQ(*max_it, 5); +} + +TEST(MinMaxTest, BeginMinEndMax) { + std::vector vec = {1, 2, 3, 4, 5}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin()); + EXPECT_EQ(max_it, vec.end() - 1); + EXPECT_EQ(*min_it, 1); + EXPECT_EQ(*max_it, 5); + +} + +TEST(MinMaxTest, BeginMaxEndMin) { + std::vector vec = {5, 4, 3, 2, 1}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.end() - 1); + EXPECT_EQ(max_it, vec.begin()); + EXPECT_EQ(*min_it, 1); + EXPECT_EQ(*max_it, 5); +} + +TEST(MinMaxTest, MinAndMaxInMiddle) { + std::vector vec = {5, 3, 2, 1, 5, 4, 2, 1}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin() + 3); + EXPECT_EQ(max_it, vec.begin() + 4); + EXPECT_EQ(*min_it, 1); + EXPECT_EQ(*max_it, 5); +} + +TEST(MinMaxTest, NegativeNumbers) { + std::vector vec = {-5, -10, -3, -1, -8}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin() + 1); + EXPECT_EQ(max_it, vec.begin() + 3); + EXPECT_EQ(*min_it, -10); + EXPECT_EQ(*max_it, -1); +} + +TEST(MinMaxTest, MixedPositiveNegative) { + std::vector vec = {-5, 10, -3, 0, 8, -20}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.end() - 1); + EXPECT_EQ(max_it, vec.begin() + 1); + EXPECT_EQ(*min_it, -20); + EXPECT_EQ(*max_it, 10); +} + +TEST(MinMaxTest, LargeVector) { + std::vector vec(1000); + + int value = -vec.size() / 2; + for (size_t i = 0; i < vec.size(); ++i, ++value) { + vec[i] = value; + } + + vec[500] = -vec.size(); + vec[750] = vec.size(); + + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(min_it, vec.begin() + 500); + EXPECT_EQ(max_it, vec.begin() + 750); + EXPECT_EQ(*min_it, -vec.size()); + EXPECT_EQ(*max_it, vec.size()); +} + +TEST(MinMaxTest, ConstCorrectness) { + const std::vector vec = {1, 9}; + auto [min_it, max_it] = MinMax(vec); + + EXPECT_EQ(*min_it, 1); + EXPECT_EQ(*max_it, 9); +} + +TEST(MinMaxTest, PerformanceCheck) { + const double THRESHOLD = 0.3; + const size_t SIZE = 1'000'000u; + std::vector large_vec(SIZE); + std::iota(large_vec.begin(), large_vec.end(), 0); + std::shuffle(large_vec.begin(), large_vec.end(), std::mt19937{18}); + + auto start = std::chrono::high_resolution_clock::now(); + auto [min_it, max_it] = MinMax(large_vec); + auto end = std::chrono::high_resolution_clock::now(); + auto duration = std::chrono::duration_cast(end - start); + + start = std::chrono::high_resolution_clock::now(); + auto [min_it_std, max_it_std] = std::minmax_element(large_vec.begin(), large_vec.end()); + end = std::chrono::high_resolution_clock::now(); + auto duration_std = std::chrono::duration_cast(end - start); + + EXPECT_LE(std::abs(duration_std.count() - duration.count()) * 1.0, duration_std.count() * THRESHOLD) << + "Your function is very slowly"; + EXPECT_EQ(*min_it, *min_it_std); + EXPECT_EQ(*max_it, *max_it_std); +} \ No newline at end of file diff --git a/03_week/tasks/os_overload/CMakeLists.txt b/03_week/tasks/os_overload/CMakeLists.txt new file mode 100644 index 00000000..48aae693 --- /dev/null +++ b/03_week/tasks/os_overload/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_os_overload test.cpp) \ No newline at end of file diff --git a/03_week/tasks/os_overload/README.md b/03_week/tasks/os_overload/README.md new file mode 100644 index 00000000..2986a87a --- /dev/null +++ b/03_week/tasks/os_overload/README.md @@ -0,0 +1,42 @@ +# Перегрузка оператора вывода + +Необходимо реализовать операторы вывода в поток для типа `CircleRegionList` и +всех вложенных в него типов. + +Структура `Coord2D` содержит два целочисленных поля `x`, `y`, по умолчанию, +имеющие значения начала координат. + +Структура `Circle` имеет поле `Coord2D` для центра окружности, и целочисленное поле +для задания радиуса окружности. По умолчанию радиус должен быть равен 1 и не должен +принимать отрицательных значений. + +Пара `CircleRegion` включает в себя структуру `Circle` и булевое поле, которое +характеризует внутренняя или внешняя зона окружности активна, `true` - внутренняя, +`false` - внешняя + +Требования к выводу: + +- `Coord2D` - должен выводится в формате `(x, y)` +- `Circle` - должен выводиться в формате `circle[{center}, r = {radius}]`, где + `{center}` вывод координат центра в соответствии с `Coord2D`, а `{radius}` + значение радиуса, или `circle[]`, если радиус равен нулю. +- `CircleRegion` - при выводе должен ставить `+` для внутренней зоны окружности и + `-` для внешней перед форматированным выводом `Circle` +- `CircleRegionList` - выводит внутри фигурных скобок с нулевым отступом, весь список + `CircleRegion` через запятую в форматированном виде, с новой строки, с отступом в одну + табуляцию или `{}`, если список пуст. + +Возможный вывод в поток: + +``` +{ + +circle[(-1, 3), r = 5], + -circle[(0, 0), r = 17], + +circle[], + -circle[] +} +``` + +## Примечание + +- Должен работать вывод в произвольный поток вывода. \ No newline at end of file diff --git a/03_week/tasks/os_overload/os_overload.cpp b/03_week/tasks/os_overload/os_overload.cpp new file mode 100644 index 00000000..e473418d --- /dev/null +++ b/03_week/tasks/os_overload/os_overload.cpp @@ -0,0 +1,21 @@ +#include +#include +#include + + +struct Coord2D { + int x; + int y; +}; + +struct Circle { + Coord2D coord; + unsigned radius; +}; + +using CircleRegion = std::pair; +using CircleRegionList = std::vector; + +/* return_type */ operator<<(/* args */) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/03_week/tasks/os_overload/test.cpp b/03_week/tasks/os_overload/test.cpp new file mode 100644 index 00000000..461009a3 --- /dev/null +++ b/03_week/tasks/os_overload/test.cpp @@ -0,0 +1,308 @@ +#include + +#include +#include + +#include "os_overload.cpp" + +TEST(Coord2DTest, DefaultConstructor) { + Coord2D coord; + EXPECT_EQ(coord.x, 0); + EXPECT_EQ(coord.y, 0); +} + +TEST(Coord2DTest, Coord2DCreation) { + Coord2D coord = {5, -3}; + EXPECT_EQ(coord.x, 5); + EXPECT_EQ(coord.y, -3); +} + +TEST(Coord2DTest, OutputOperator) { + { + Coord2D coord; + std::ostringstream oss; + oss << coord; + EXPECT_EQ(oss.str(), "(0, 0)"); + } + { + Coord2D coord{42, -15}; + std::ostringstream oss; + oss << coord; + EXPECT_EQ(oss.str(), "(42, -15)"); + } + { + Coord2D coord{-1, 3}; + std::ostringstream oss; + oss << coord; + EXPECT_EQ(oss.str(), "(-1, 3)"); + } +} + +TEST(CircleTest, DefaultConstructor) { + Circle circle; + EXPECT_EQ(circle.coord.x, 0); + EXPECT_EQ(circle.coord.y, 0); + EXPECT_EQ(circle.radius, 1u); +} + +TEST(CircleTest, CircleCreation) { + { + Coord2D center{10, 20}; + Circle circle(center, 5); + EXPECT_EQ(circle.coord.x, 10); + EXPECT_EQ(circle.coord.y, 20); + EXPECT_EQ(circle.radius, 5u); + } + { + Circle circle({-5, 7}); + EXPECT_EQ(circle.coord.x, -5); + EXPECT_EQ(circle.coord.y, 7); + EXPECT_EQ(circle.radius, 1u); + } +} + +TEST(CircleTest, OutputOperator) { + { + Circle circle; + std::ostringstream oss; + oss << circle; + EXPECT_EQ(oss.str(), "circle[(0, 0), r = 1]"); + } + { + Coord2D center(-1, 3); + Circle circle(center, 5); + std::ostringstream oss; + oss << circle; + EXPECT_EQ(oss.str(), "circle[(-1, 3), r = 5]"); + } + { + Coord2D center(0, 0); + Circle circle(center, 17); + std::ostringstream oss; + oss << circle; + EXPECT_EQ(oss.str(), "circle[(0, 0), r = 17]"); + } + { + Coord2D center(10, 10); + Circle circle(center, 0); + std::ostringstream oss; + oss << circle; + EXPECT_EQ(oss.str(), "circle[]"); + } + { + Coord2D center(100, -200); + Circle circle(center, 1000); + std::ostringstream oss; + oss << circle; + EXPECT_EQ(oss.str(), "circle[(100, -200), r = 1000]"); + } +} + +TEST(CircleRegionTest, CreateAndOutput) { + { + Circle circle({3, 4}); + CircleRegion region(circle, true); + std::ostringstream oss; + oss << region; + EXPECT_EQ(oss.str(), "+circle[(3, 4), r = 1]"); + } + { + Circle circle({-5, -6}, 7); + CircleRegion region(circle, false); + std::ostringstream oss; + oss << region; + EXPECT_EQ(oss.str(), "-circle[(-5, -6), r = 7]"); + } + { + Circle circle({1, 2}, 0); + CircleRegion region(circle, true); + std::ostringstream oss; + oss << region; + EXPECT_EQ(oss.str(), "+circle[]"); + } + { + Circle circle({1, 2}, 0); + CircleRegion region(circle, false); + std::ostringstream oss; + oss << region; + EXPECT_EQ(oss.str(), "-circle[]"); + } +} + +TEST(CircleRegionListTest, EmptyList) { + CircleRegionList empty_list; + std::ostringstream oss; + oss << empty_list; + std::string expected = "{}"; + EXPECT_EQ(oss.str(), expected); +} + +TEST(CircleRegionListTest, SingleElement) { + CircleRegionList list; + list.emplace_back(Circle(Coord2D{1, 2}, 3), true); + std::ostringstream oss; + oss << list; + std::string expected = "{\n\t+circle[(1, 2), r = 3]\n}"; + EXPECT_EQ(oss.str(), expected); +} + +TEST(CircleRegionListTest, MultipleElements) { + CircleRegionList list; + list.emplace_back(Circle(Coord2D(-1, 3), 5), true); + list.emplace_back(Circle(Coord2D(0, 0), 17), false); + list.emplace_back(Circle(Coord2D(10, 20), 0), true); + list.emplace_back(Circle(Coord2D(-5, -5), 0), false); + + std::ostringstream oss; + oss << list; + + std::string expected = + "{\n" + "\t+circle[(-1, 3), r = 5],\n" + "\t-circle[(0, 0), r = 17],\n" + "\t+circle[],\n" + "\t-circle[]\n" + "}"; + EXPECT_EQ(oss.str(), expected); +} + +TEST(CircleRegionListTest, VariousCombinations) { + CircleRegionList list; + + // Добавляем разные комбинации + list.emplace_back(Circle({0, 0}), true); + list.emplace_back(Circle(Coord2D(5, 5), 10), false); + list.emplace_back(Circle(Coord2D(-10, -10), 0), true); + list.emplace_back(Circle(Coord2D(100, 200), 50), true); + list.emplace_back(Circle(Coord2D(-3, 7), 2), false); + + std::ostringstream oss; + oss << list; + + std::string expected = + "{\n" + "\t+circle[(0, 0), r = 1],\n" + "\t-circle[(5, 5), r = 10],\n" + "\t+circle[],\n" + "\t+circle[(100, 200), r = 50],\n" + "\t-circle[(-3, 7), r = 2]\n" + "}"; + EXPECT_EQ(oss.str(), expected); +} + +TEST(FullTaskTest, ChainedOutput) { + { + Coord2D coord{42, -15}; + std::ostringstream oss; + oss << coord << coord; + EXPECT_EQ(oss.str(), "(42, -15)(42, -15)"); + } + { + Circle circle_one({0, 0}, 17); + Circle circle_two({10, 10}, 0); + std::ostringstream oss; + oss << circle_one << circle_two; + EXPECT_EQ(oss.str(), "circle[(0, 0), r = 17]circle[]"); + } + { + Circle circle({-5, -6}, 7); + CircleRegion region(circle, false); + std::ostringstream oss; + oss << region << region; + EXPECT_EQ(oss.str(), "-circle[(-5, -6), r = 7]-circle[(-5, -6), r = 7]"); + } + { + CircleRegionList list; + list.emplace_back(Circle(Coord2D(1, 2), 3), true); + + std::ostringstream oss; + oss << "List:\n" << list << '\n' << list << "\nEnd"; + + std::string expected = "List:\n{\n\t+circle[(1, 2), r = 3]\n}\n{\n\t+circle[(1, 2), r = 3]\n}\nEnd"; + EXPECT_EQ(oss.str(), expected); + } +} + +TEST(FullTaskTest, ConstCorrectness) { + { + const Coord2D coord{42, -15}; + std::ostringstream oss; + oss << coord << coord; + EXPECT_EQ(oss.str(), "(42, -15)(42, -15)"); + } + { + const Circle circle_one({0, 0}, 17); + const Circle circle_two({10, 10}, 0); + std::ostringstream oss; + oss << circle_one << circle_two; + EXPECT_EQ(oss.str(), "circle[(0, 0), r = 17]circle[]"); + } + { + Circle circle({-5, -6}, 7); + const CircleRegion region(circle, false); + std::ostringstream oss; + oss << region << region; + EXPECT_EQ(oss.str(), "-circle[(-5, -6), r = 7]-circle[(-5, -6), r = 7]"); + } + { + const CircleRegionList list = { std::make_pair(Circle(Coord2D(1, 2), 3), true) }; + + std::ostringstream oss; + oss << "List:\n" << list << '\n' << list << "\nEnd"; + + std::string expected = "List:\n{\n\t+circle[(1, 2), r = 3]\n}\n{\n\t+circle[(1, 2), r = 3]\n}\nEnd"; + EXPECT_EQ(oss.str(), expected); + } +} + +class StandardOutputCaptureTest : public ::testing::Test { +protected: + void SetUp() override { + origin_cout = std::cout.rdbuf(buffer.rdbuf()); + } + + void TearDown() override { + std::cout.rdbuf(origin_cout); + } + + std::string GetOutput() { + return buffer.str(); + } + + void ClearOutput() { + buffer.str(""); + } + + std::stringstream buffer; + std::streambuf* origin_cout; +}; + +TEST_F(StandardOutputCaptureTest, WorkWithCout) { + { + Coord2D coord{42, -15}; + EXPECT_NO_THROW(std::cout << coord); + EXPECT_EQ(GetOutput(), "(42, -15)"); + } + ClearOutput(); + { + Circle circle_one({0, 0}, 17); + Circle circle_two({10, 10}, 0); + EXPECT_NO_THROW(std::cout << circle_one << circle_two); + EXPECT_EQ(GetOutput(), "circle[(0, 0), r = 17]circle[]"); + } + ClearOutput(); + { + Circle circle({-5, -6}, 7); + CircleRegion region(circle, false); + EXPECT_NO_THROW(std::cout << region); + EXPECT_EQ(GetOutput(), "-circle[(-5, -6), r = 7]"); + } + ClearOutput(); + { + CircleRegionList list; + list.emplace_back(Circle(Coord2D(1, 2), 3), true); + EXPECT_NO_THROW(std::cout << "List:\n" << list << '\n' << list << "\nEnd"); + std::string expected = "List:\n{\n\t+circle[(1, 2), r = 3]\n}\n{\n\t+circle[(1, 2), r = 3]\n}\nEnd"; + EXPECT_EQ(GetOutput(), expected); + } +} \ No newline at end of file diff --git a/03_week/tasks/range/CMakeLists.txt b/03_week/tasks/range/CMakeLists.txt new file mode 100644 index 00000000..650a0654 --- /dev/null +++ b/03_week/tasks/range/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_range test.cpp) \ No newline at end of file diff --git a/03_week/tasks/range/README.md b/03_week/tasks/range/README.md new file mode 100644 index 00000000..4fb3ccad --- /dev/null +++ b/03_week/tasks/range/README.md @@ -0,0 +1,11 @@ +# Диапазон элементов + +Необходимо реализовать функцию `Range`, которая принимает на вход значение +начала диапазона, конца диапазона, шаг, и возвращает вектор `std::vector` +значений из диапазона `[from, to)` с шагом `step`. Шаг по умолчанию равен 1. + +## Примечание + +- Запрещено использовать функции из `` +- Рекомендуется избежать реалокаций памяти, то есть выделить память под нужное + количество элементов заранее \ No newline at end of file diff --git a/03_week/tasks/range/range.cpp b/03_week/tasks/range/range.cpp new file mode 100644 index 00000000..d2085495 --- /dev/null +++ b/03_week/tasks/range/range.cpp @@ -0,0 +1,7 @@ +#include +#include + + +std::vector Range(int from, int to, int step) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/03_week/tasks/range/test.cpp b/03_week/tasks/range/test.cpp new file mode 100644 index 00000000..1b680b90 --- /dev/null +++ b/03_week/tasks/range/test.cpp @@ -0,0 +1,98 @@ +#include + +#include +#include + +#include "range.cpp" + +TEST(RangeTest, SimpleIncreasing) { + EXPECT_EQ(Range(1, 6, 1), std::vector({1, 2, 3, 4, 5})); + EXPECT_EQ(Range(1, 7, 2), std::vector({1, 3, 5})); + EXPECT_EQ(Range(-20, 10, 10), std::vector({-20, -10, 0})); +} + +TEST(RangeTest, SimpleDecreasing) { + EXPECT_EQ(Range(6, 1, -1), std::vector({6, 5, 4, 3, 2})); + EXPECT_EQ(Range(7, 1, -2), std::vector({7, 5, 3})); + EXPECT_EQ(Range(20, 18, -3), std::vector({20})); + EXPECT_EQ(Range(-20, -24, -3), std::vector({-20, -23})); +} + +TEST(RangeTest, EmptyRanges) { + EXPECT_TRUE(Range(0, 0, 2).empty()); + EXPECT_TRUE(Range(7, 7, 1).empty()); + EXPECT_TRUE(Range(20, 20, -2).empty()); + EXPECT_TRUE(Range(-5, -5, -2).empty()); + EXPECT_TRUE(Range(-7, -7, 1).empty()); +} + +TEST(RangeTest, InvalidParameters) { + EXPECT_TRUE(Range(1, 7, -1).empty()); + EXPECT_TRUE(Range(3, 7, 0).empty()); + EXPECT_TRUE(Range(2, -2, 2).empty()); + EXPECT_TRUE(Range(3, -7, 0).empty()); + EXPECT_TRUE(Range(-2, -3, 2).empty()); +} + +TEST(RangeTest, SingleElement) { + EXPECT_EQ(Range(7, 8, 1), std::vector({7})); + EXPECT_EQ(Range(7, 8, 2), std::vector({7})); + EXPECT_EQ(Range(7, 8, 100), std::vector({7})); + + EXPECT_EQ(Range(5, 4, -1), std::vector({5})); + EXPECT_EQ(Range(5, 4, -2), std::vector({5})); + EXPECT_EQ(Range(5, 4, -100), std::vector({5})); + + EXPECT_EQ(Range(-7, 8, 100), std::vector({-7})); + EXPECT_EQ(Range(-7, -8, -100), std::vector({-7})); +} + +TEST(RangeTest, NegativeNumbers) { + EXPECT_EQ(Range(-5, 0, 1), std::vector({-5, -4, -3, -2, -1})); + EXPECT_EQ(Range(-5, 5, 2), std::vector({-5, -3, -1, 1, 3})); + EXPECT_EQ(Range(0, -5, -1), std::vector({0, -1, -2, -3, -4})); + EXPECT_EQ(Range(0, -10, -3), std::vector({0, -3, -6, -9})); +} + +TEST(RangeTest, LargeStep) { + EXPECT_EQ(Range(0, 100, 33), std::vector({0, 33, 66, 99})); + EXPECT_EQ(Range(100, 0, -33), std::vector({100, 67, 34, 1})); +} + +TEST(RangeTest, DefaultStep) { + EXPECT_EQ(Range(0, 5), std::vector({0, 1, 2, 3, 4})); + EXPECT_EQ(Range(-2, 3), std::vector({-2, -1, 0, 1, 2})); + EXPECT_TRUE(Range(5, 5).empty()); + EXPECT_TRUE(Range(5, 3).empty()); +} + +TEST(RangeTest, CapacityMatchesSize) { + auto result = Range(0, 100, 3); + EXPECT_EQ(result.capacity(), result.size()); +} + +TEST(RangePerformanceTest, LargeRange) { + const int from = -1'000'000; + const int to = 1'000'000; + + auto result_asc = Range(from, to); + EXPECT_EQ(result_asc.size(), to - from); + EXPECT_EQ(result_asc.front(), from); + EXPECT_EQ(result_asc.back(), to - 1); + + for (size_t i = 0; i < result_asc.size(); ++i) { + EXPECT_EQ(result_asc[i], from + static_cast(i)); + } + + auto result_desc = Range(to - 1, from - 1, -1); + EXPECT_EQ(result_desc.size(), to - from); + EXPECT_EQ(result_desc.front(), to - 1); + EXPECT_EQ(result_desc.back(), from); + + for (size_t i = 0; i < result_asc.size(); ++i) { + EXPECT_EQ(result_desc[i], to - 1 - static_cast(i)); + } + + EXPECT_GE(result_asc.capacity(), result_asc.size()); + EXPECT_GE(result_desc.capacity(), result_desc.size()); +} \ No newline at end of file diff --git a/03_week/tasks/unique/CMakeLists.txt b/03_week/tasks/unique/CMakeLists.txt new file mode 100644 index 00000000..3920144d --- /dev/null +++ b/03_week/tasks/unique/CMakeLists.txt @@ -0,0 +1 @@ +add_gtest(test_unique test.cpp) \ No newline at end of file diff --git a/03_week/tasks/unique/README.md b/03_week/tasks/unique/README.md new file mode 100644 index 00000000..5f5c253e --- /dev/null +++ b/03_week/tasks/unique/README.md @@ -0,0 +1,11 @@ +# Уникальные элементы + +Необходимо реализовать функцию `Unique`, которая принимает отсортированный +вектор `std::vector` и возвращает вектор уникальных элементов в исходном +порядке. + +## Примечание + +- Запрещено использовать функции из `` +- Рекомендуется избегать частых реалокаций памяти +- Вместимость вектора должна соответствовать количеству элементов \ No newline at end of file diff --git a/03_week/tasks/unique/test.cpp b/03_week/tasks/unique/test.cpp new file mode 100644 index 00000000..6c459abd --- /dev/null +++ b/03_week/tasks/unique/test.cpp @@ -0,0 +1,92 @@ +#include + +#include +#include +#include + +#include "unique.cpp" + +TEST(UniqueTest, EmptyVector) { + std::vector empty; + auto result = Unique(empty); + EXPECT_TRUE(result.empty()); + EXPECT_EQ(result.capacity(), result.size()); +} + +TEST(UniqueTest, SingleElement) { + std::vector vec = {42}; + auto result = Unique(vec); + EXPECT_EQ(result.size(), 1); + EXPECT_EQ(result[0], 42); +} + +TEST(UniqueTest, AllSameElements) { + std::vector vec = {1, 1, 1, 1, 1}; + auto result = Unique(vec); + EXPECT_EQ(result.size(), 1); + EXPECT_EQ(result[0], 1); +} + +TEST(UniqueTest, AlreadyUniqueSorted) { + std::vector vec = {1, 2, 3, 4, 5}; + auto result = Unique(vec); + EXPECT_EQ(result.size(), 5); + EXPECT_EQ(result, vec); +} + +TEST(UniqueTest, SimpleDuplicates) { + std::vector vec = {1, 2, 2, 3, 3, 3}; + auto result = Unique(vec); + std::vector expected = {1, 2, 3}; + EXPECT_EQ(result, expected); +} + +TEST(UniqueTest, MultipleDuplicates) { + std::vector vec = {1, 1, 2, 2, 2, 3, 3, 4, 5, 5, 5, 5}; + auto result = Unique(vec); + std::vector expected = {1, 2, 3, 4, 5}; + EXPECT_EQ(result, expected); +} + +TEST(UniqueTest, NegativeNumbers) { + std::vector vec = {-5, -5, -3, -3, -3, 0, 0, 2, 2, 2, 2}; + auto result = Unique(vec); + std::vector expected = {-5, -3, 0, 2}; + EXPECT_EQ(result, expected); +} + +TEST(UniqueTest, ZeroAndDuplicates) { + std::vector vec = {0, 0, 0, 0}; + auto result = Unique(vec); + std::vector expected = {0}; + EXPECT_EQ(result, expected); +} + +TEST(UniqueTest, RandomSortedData) { + std::mt19937 gen(18); + std::uniform_int_distribution dist(-1000, 1000); + + const size_t N = 1'000'000; + std::vector vec(N); + + for (size_t i = 0; i < N; ++i) { + vec[i] = dist(gen); + } + std::sort(vec.begin(), vec.end()); + std::vector expected = vec; + auto last = std::unique(expected.begin(), expected.end()); + expected.erase(last, expected.end()); + + auto result = Unique(vec); + + EXPECT_EQ(result.size(), expected.size()); + EXPECT_EQ(result.size(), result.capacity()); + EXPECT_EQ(result, expected); +} + +TEST(UniqueTest, ConstCorrectness) { + const std::vector vec = {1, 2, 2, 3, 3, 3}; + auto result = Unique(vec); + std::vector expected = {1, 2, 3}; + EXPECT_EQ(result, expected); +} \ No newline at end of file diff --git a/03_week/tasks/unique/unique.cpp b/03_week/tasks/unique/unique.cpp new file mode 100644 index 00000000..9d2545bb --- /dev/null +++ b/03_week/tasks/unique/unique.cpp @@ -0,0 +1,6 @@ +#include +#include + +/* return_type */ Unique(/* args */) { + throw std::runtime_error{"Not implemented"}; +} diff --git a/04_week/04_class.md b/04_week/04_class.md new file mode 100644 index 00000000..46e00076 --- /dev/null +++ b/04_week/04_class.md @@ -0,0 +1,902 @@ +# Лекция 4. ООП. Класс + +1. [ООП](#oop) + - [Инкапсуляция](#encapsulation) + - [Наследование](#inheritance) + - [Полиморфизм](#polymorphism) + - [Абстракция](#abstraction) +1. [Класс](#class) + - [Спецификаторы доступа](#access_specifiers) + - [Отличие класса и структуры](#class_struct_diff) + - [Пустой класс](#class_empty) + - [Поля класса](#class_fields) + - [Инициализация полей значением по умолчанию](#field_default_init) + - [Конструктор](#ctor) + - [Список инициализации полей класса](#member_initializer_list) + - [Параметризованный конструктор](#parameterized_ctor) + - [Конструктор по умолчанию](#default_ctor) + - [Конструктор копирования](#copy_ctor) + - [Указатель на себя `this`](#this_ptr) + - [Копирующий оператор присваивания](#copy_assignment) + - [Деструктор](#dtor) + - [Конструктор преобразования](#converting_ctor) + - [Ключевое слово `explicit`](#explicit) + - [Конструктор от `std::initializer_list`(_C++11_)](#ctor_std_initializer_list) + - [Делегирующий конструктор (_C++11_)](#delegating_ctor) + - [Ключевое слово `default` (_С++11_)](#keyword_default) + - [Ключевое слово `delete` (_С++11_)](#keyword_delete) + - [Методы](#methods) + - [Определение методов вне класса](#methods_definition_outside) + - [CV-квалификация методов ](#cv_for_methods) + - [Оператор преобразования](#conversion_operator) + - [Перегрузка операторов внутри класса](#class_operator_overloading_inside) + - [Перегрузка операторов вне класса](#class_operator_overloading_outside) + - [Ключевое слово `friend`](#keyword_friend) + - [Ключевое слово `mutable`](#keyword_mutable) + + +## ООП + +Объектно-ориентированное программирование - парадигма программирования, которая +основывается на представление в коде программы различных объектов, взаимодействующих +друг с другом. + +Класс - пользовательский тип данных, шаблон (макет) для создания объектов и описания +их характеристик, функций. + +Объект - экземпляр класса. Объект включает данные (поля) и методы (функции). +Что позволяет хранить характеристики объекта, изменять их и взаимодействовать с +другими объектами. + +Основные принципы ООП: + +- Инкапсуляция +- Наследование +- Полиморфизм +- Абстракция + +### Инкапсуляция + +Инкапсуляция - объединение данных и методов для работы с данными внутри класса. +Сокрытие деталей реализации класса. + +```c++ +class Budget { +public: + void increase_balance(double value) { + budget_ += value; + } +private: + double budget_; +}; +``` + +### Наследование + +Наследование - механизм создания новых классов на основе существующих. Позволяет +строить иерархию классов и переиспользовать код классов родителей внутри +классов наследников. + +```c++ +class Animal { /* common data */}; +class Cat : public Animal {}; +class Dog : public Animal {}; +``` + +### Полиморфизм + +Полиморфизм - возможность различного поведения сущностей C++. + +Виды полиморфизма: + +- статический (на этапе компиляции, шаблоны, перегрузка функций) +- динамический (во время выполнения программы, виртуальные методы) + +```c++ +class Shape { +public: + virtual void draw() = 0; +}; +class Circle : public Shape { + void draw() override { /* рисуем круг */ } +}; +``` + +### Абстракция + +Абстракция - упрощение сложных вещей через выделение основных характеристик. + +## Класс + +Класс - пользовательский тип данных, который объединяет в себе данные (поля класса) +и функции для работы с данными (методы класса), представляет собой макет для +создания объектов (экземпляров) данного типа. + +Синтаксис: `class {};` + +- `` - имя класса, пользовательского типа данных +- `` - тело класса, включающее поля, методы, конструкторы и деструктор + +### Спецификаторы доступа + +Для ограничения видимости полей и методов внутри класса используются +спецификаторы доступа, весь код после спецификатора имеет соответствующий тип +доступа: + +- `public` - публичный доступ, поле или метод класса доступны извне +- `protected` - защищенный доступ, поля и методы доступны наследникам класса + и внутри класса +- `private` - приватный доступ, поля и методы доступны только внутри класса. + +Синтаксис внутри класса или структуры: `:` + +Указывать спецификаторы доступа можно произвольное число раз. + +```c++ +class User { +public: + /* some data and functions for everyone */ +protected: + /* some data and functions for children classes */ +private: + /* some data and functions inside class */ +}; +``` + +Приватные поля и методы будут недоступны снаружи, то есть **НЕЛЬЗЯ** к ним +обратится или вызвать через экземляр класс, используя операторы `.`, `->`. + +Всё содержимое класса по умолчанию имеет спецификатор доступа `private`, +несмотря на это часто принято явно указывать данный спецификатор, даже при +определении полей класса в самом начале тела класса. + +### Отличие класса и структуры + +Структура `struct` и класс `class` имеют одинаковые возможности в C++. + +Отличие заключается, что содержимое структуры по умолчанию имеет публичный +доступ `public`, а содержимое класса приватный `private` + +Структура нужна для взаимодействия с `legacy` кодом на языке C, а также для +публичных классов. + +Несмотря на одинаковые возможности, принято разделять структуру и класс +семантически. Так, структуру используют только с публичными полями, а класс +с приватными. Создавать классы и структуры со смешанным типом полей не +рекомендуется, так как это может быть не очевидно и не понятно программистам, +читающим код. + +### Пустой класс + +Пустой класс имеет размер 1 байт, поскольку объект такого класса можно создать +и необходимо иметь адресс данного объекта, чтобы иметь адресс, необходимо что-то +положить в память по определенному адресу. + +Чаще используется пустая структура. Такая структура может понадобитсья в качестве +именнованного тега. Пока будем просто считать, что иногда надо. + +### Поля класса + +Поля класса представляют собой внутренние переменные произвольного типа. +К полям класса внутри класса можно обращаться по имени. В качестве поля можно +использовать указатели и ссылки. + +В случае ссылок необходимо их инициализировоать при создании объекта. Например, +можно проинициализирвоать адресом объекта из глобальной области видимости. А еще +это можно сделать в списке инициализации при конструировании объекта. + +Существуют разные стили кода к именованию полей класса. Часто встречается: + +- `m_` - добавляют `m_` в качестве префикса к перименной (`m` - `member`) +- `_` - добавляют `_` в качестве постфикса к переменной. + +```c++ +// inside class +int m_value; +int value_; +``` + +Поля класса хранятся в классе и инициализируются в порядке их объявления. + +Поля уникальны для каждого экземпляра класса. + +### Инициализация полей значением по умолчанию + +Аналогично структурам рекомендуется всегда инициализировать поля внутри класса. + +```c++ +class Time { +private: + int hour_ = 0; + int minute_{0}; // uniform +}; +``` + +Иначе в полях класса также может лежать мусор. + +### Конструктор + +Конструктор это особый метод класса, который используется для конструирования +объекта. + +Синтаксис: `() {}` + +- `` - имя конструктора должно совпадать с именем класса +- `` - аргументы конструктора. +- `` - тело конструктора. + +В зависимости от аргументов конструктора выделяют различные типы конструктора. +Основные способы конструирования объекта: + +- Параметризованный конструктор +- Конструктор по умолчанию +- Конструктор копирования +- Копирующий оператор присваивания +- Конструктор перемещения +- Перемещающий оператор присваивания + +Важно понимать, что если конструкторы не определены, то компилятор самостоятельно +сгенерирует конструкторы. Но если определен, хотя бы один конструктор, то +компилятор скорее всего этого не сделает. + +Важно понимать, что при входе в тело конструктора все поля уже проинициализированы +и в теле может происходить только присваивание новых значений полям класса. +Следовательно, в теле уже нельзя изменить константное поле или инициализировать +ссылку. + +Проинициализировать константу и ссылку можно не только значением по +умолчанию или значением (адресом) переменной из глобальной области видимости. +Для этого в синтаксисе конструктора предусмотрен список инициализации. + +### Список инициализации полей класса + +Список инициализации полей (_member initializer list_) позволяет инициализировать +поля в момент создания объекта. В списке инициализации доступны аргументы +конструктора и имена полей класса. Список инициализации указывается между сигнатурой +и телом конструктора, и выглядит как перечисление после символа `:` через запятую +полей класса и внутри `()` или `{}` их инициализирующих значений. + +Синтаксис: `() : {}` + +- `` - список инициализации = `(), {}` + +```c++ +class InitList { +public: + InitList(int val) : a_(val), b_(val), c_(val) {} +public: + int a_; int b_; int c_; +}; +``` + +Причем имена полей класса и имена параметров могут полностью совпадать, конфликта +имен не будет, поскольку компилятор понимает, что нужно инициализировать поля. + +```c++ +class InitSameName { +public: + InitSameName(int a, int b, int c) : a(a), b(b), c(c) {} +public: + int a; int b; int c; +}; +``` + +Также, следует отметить, что в качестве инициализирующего значения, может использоваться +не только переменная или константа, но также выражение (_expression_) и результат +вызова функции. + +**ВАЖНО**, что инициализация происходит в порядке полей класса, и не зависит от +порядка в списке инициализации. Поэтому важно самостоятельно отслеживать +правильный порядок инициализации. + +```c++ +class BadOrderInit { +public: + BadOrderInit(int val) : c(val), b(c + 1), a(10) {} +public: + int a; int b; int c; +}; +``` +- `c` используется неинициализированной при инициализации `b` (**UB**) + +Если поля класса объявлены со значением по умолчанию, то они будут проигнорированы +для полей в списке инициализации. + +```c++ +class BadOrderInit { +public: + BadOrderInit(int val) : c(val), b(c + 1), a(10) {} +public: + int a = 7; int b = 7; int c = 7; +}; +``` +- значение `7` будет проигнорированно, по-прежнему **UB** + +Списки инициализации могут быть неполными. Тогда недостающие поля будут +сконструированы со значениями по умолчанию, а при их отсутствии инициализируются +мусором. + +```c++ +class BadOrderInitNoAB { +public: + BadOrderInitNoAB(int val) : c(val) {} +public: + int a; int b = 7; int c = 7; +}; +``` +- в поле `b` будет значение `7`, в `a` будет мусор + +Список инициализации позволяет сконструировать константное поле и поле ссылку извне: + +```c++ +class RefConst { +public: + RefConst(int value, int& ref, const double& cref) + : id_(value), ref_(ref), const_ref_(cref) {} +private: + const int id_; + int& ref_; + const double& const_ref_; +}; +``` + +### Параметризованный конструктор + +Конструктор, который имеет параметры (аргументы) называют параметризованным +конструктором (конструктором с параметрами). Аргументов может быть несколько +и они могут иметь значения по умолчанию, Таким образом, конструктор может +быть перегружен. + +```c++ +class Time { +public: + Time(int hour, int minute, int second) + : hour_(hour), minute_(minute), second_(second) {} +private: + int hour_, minute_, second_; +}; +``` + +Если конструктор имеет у всех аргументов значение по умолчанию, то такой +конструктор перегружает конструктор по умолчанию. + +```c++ +class Time { +public: + Time(int hour = 0, int minute = 0, int second = 0) + : hour_(hour), minute_(minute), second_(second) {} +private: + int hour_, minute_, second_; +}; +``` + +Для создания объекта класса необходим вызов конструктора. Синтаксис вызова констуктора: + +```c++ +Time t1(1, 1, 1); +Time t2{1, 1, 1}; +Time t3 = {1, 1, 1} +Time t4 = Time{1, 1, 1}; +Time t5 = Time(1, 1, 1); +``` + +Аналогично для всех его вариантов перегрузки. + +### Конструктор по умолчанию + +Конструктор по умолчанию представляет собой конструктор без аргументов. +Часто для простых класов конструктор имеет пустое тело. Удобно использовать +значение по умолчанию для инициализации. + +Синтаксис: `() {}` + +Часто имеет пустое тело для тривиальных случаев. + +Если не определен ни один конструктор, то компилятор самостоятельно сгенерирует +данный конструктор. + +```c++ +class DefaultCtor { +public: + DefaultCtor() {} +private: + int value = 0; +}; +``` + +Вызов конструктора: + +```c++ +DefaultCtor obj; +DefaultCtor obj2{}; +DefaultCtor obj3 = {}; +DefaultCtor obj4 = DefaultCtor{}; +DefaultCtor obj5 = DefaultCtor(); +``` +- во всех этих случаях вызовется только конструктор по умолчанию один раз + +### Конструктор копирования + +Конструктор копирования необходим для создания копии объекта из объекта того +же типа. Представляет собой конструктор, принимающий в качестве аргументов +константную ссылку того же типа, что и сам класс. + +Синтаксис: `(const & ) {}` + +```c++ +class Time { +public: + Time(const Time& other) + : hour_(other.hour_), minute_(other.minute_), second_(other.second_) {} +private: + int hour_, minute_, second_; +}; +``` + +Поля другого объекта того же класса доступны внутри методов класса даже если они +приватные. + +Вызывается конструктор копирования: + +- при передаче в функцию по значению +- при возврате объекта соответствующего значения по значению +- при конструировании одного объекта из другого + +```c++ +Time t; +Time t1 = t; // copy ctor +Time t2(t); // copy ctor +Time t3{t}; // copy ctor +``` + +### Указатель на себя `this` + +Внутри класса, в методах, в том числе конструкторах, можно получить указатель на +себя (объект класса, который вызывает данный метод) с помощью ключевого слова `this`. + +Можно использовать `this`, как в качестве значения по умолчанию, так и в списке +инициализации. + +```c++ +class Self { +public: + Self() : self(this) {}; + Self* GetPtr() { return self; } + Self& GetRef() { return *this; } +private: + Self* self = this; +}; +``` + +Можно считать что указатель на себя передается первым неявным аргументом в конструкторы, +методы и операторы класса. + +Через указатель можно явно обращаться к полям класса, но как правило, так не делают + +```c++ +// inside methods +this->self; +``` + +### Копирующий оператор присваивания + +Оператор присвания необходим при присваивании одного созданного объекта другому. +Если один из объектов не создан, то он не будет вызываться, а будет вызываться +конструктор копирования, даже если в инструкции есть `=`. + +Как правило, оператор возвращает ссылку на себя (экземпляр текущего класса), что +позволяет испоьзовать цепочку из операторов `=`. Для этого необходимо вернуть из +оператора разыменованный указатель на себя `return *this;`. + +Синтаксис: `& operator=(const & ) {}` + +Поскольку язык не запрещает присвоить объект самому себе, как правило, в копирующем +операторе присваивания выполняют проверку на самоприсваивание. Особенно это +критично для классов владеющих ресурсами (выделяющих память), что может привести +к **UB** + +```c++ +class Time { +public: + Time& operator=(const Time& other) { + if (this == &other) { + return *this; + } + hour_ = other.hour_; + minute_ = other.minute_; + second_ = other.second_; + return *this; + } +private: + int hour_, minute_, second_; +}; +``` + +Вызов оператора: + +```c++ +Time t1, t2, t3; +t1 = t2; // copy assignment +t1 = t1; // copy assignment +t1 = t2 = t3; // copy assignment +auto t4 = t1; // copy ctor (not a copy assignment!) +``` + +### Деструктор + +Особый метод, вызываемый перед разрушением объекта, когда заканчивается время +жизни объекта. + +Синтаксис: `~() {}` + +Если в конструкторе выполнялось ручное выделение ресурсов, то в деструкторе +необходимо обязательно освободить ресурсы. Иначе деструктор остается тривиальным +и генерируется компилятором по умолчанию. + +Деструкторы вызываются в обратном порядке по отношению к конструируемым объектам +при выходе из области видимости. Последний сконструированный объект, будет разрушен +первым. + +### Конструктор преобразования + +Конструктором преобразования называется конструктор, принимающий один аргумент +другого произвольного типа. Данный конструктор разрешает неявное преобразование +из указанного типа в тип класса. + +```c++ +class Integer { +private: + int value; +public: + Integer(int v) : value(v) {} + Integer(char c) : value(static_cast(c)) {} +}; +``` + +Таким образом, если функция принимает пользовательский класс, а класс имеет +конструктор преобразования от другого типа, то в функцию можно передать +непосредственно этот другой тип, произойдет неявное преобразование с помощью +соответствующего конструктора: + +```c++ +int DoSomething(Integer i) {} + +int main() { + Integer i{3}; + int value = 5; + char c = 'I'; + DoSomething(i); // OK + DoSomething(value); // OK + DoSomething(5); // OK + DoSomething(c); // OK + DoSomething('i'); // OK +} +``` + +**ВАЖНО** понимать, что при наличии конструктора присваивания из другого типа, +компилятор **НЕ** будет генеировать оператор присваивания из данного типа, его +необходимо определять самостоятельно. + +### Ключевое слово `explicit` + +Ключевое слово `explicit` используется как спецификатор перед именем конструктора +и позволяет запретить неявное преобразование и сообщает компилятору, что данный +конструктор можно вызывать только явно. + +```c++ +class Integer { +private: + int value; +public: + Integer(int v) : value(v) {} + Integer(char c) : value(static_cast(c)) {} + explicit Integer(double d) : value(static_cast(d)) {} +}; +``` + +Неявно такой конструктор вызвать нельзя: + +```c++ +//Integer i2 = 3.14; // compile error +Integer i3 = Integer{3.14}; // OK + +int DoSomething(Integer i) {} + +int main() { + double d = 3.14; + //DoSomething(d); // compile error + //DoSomething(3.14); // compile error + DoSomething(Integer{3.14}); // OK + DoSomething(Integer(3.14)); // OK +} +``` + +Также спецификатор `explicit` можно использовать с оператором преобразования, об этом +после знакомства с методами. + +### Конструктор от `std::initializer_list`(_C++11_) + +В C++11 появился контейнер список инициализации `std::initializer_list`, который +позволяет инициализировать класс набором элементов. Что вызывает неоднозначность +при наличии параметризированных конструкторов какой конструктор вызывать. + +Конструктор по умолчанию имеет приоритет перед конструктором от списка инициализации. + +Список инициализации имеет приоритет перед параметризированными конструкторами при +использовании `{}`. + +```c++ +class Vector { +public: + Vector() {}; + Vector(size_t count); + Vector(int a, int b); + Vector(std::initializer_list list); +private: + std::vector data; +}; +``` + +Вызов конструкторов: + +```c++ +Vector v = {1, 2, 3, 4, 5}; // ctor std::initializer_list +Vector v2{1, 2, 3}; // ctor std::initializer_list +Vector v3(10); // ctor Vector(size_t) +Vector v4{10}; // ctor std::initializer_list +Vector v5 = {10}; // ctor std::initializer_list +Vector v6(10, 20); // ctor Vector(int a, int b) +Vector v7{10, 20}; // ctor std::initializer_list +Vector v8 = {10, 20}; // ctor std::initializer_list +Vector v9 = 10; // ctor Vector(size_t) implicit cast +Vector v10; // default ctor +Vector v11{}; // default ctor +Vector v12 = {}; // default ctor +``` + +### Делегирующий конструктор (_C++11_) + +Делегирующий конструктор - конструктор, который на месте списка инициализации +использует другой конструктор данного класса. В таком случае можно указать только +один целевой конструктор, дополнительно списки инициализации указать нельзя. + +```c++ +class Time { +public: + Time(int hour, int minute, int second) + : hour_(hour), minute_(minute), second_(second) {} + Time(int hour) : Time(hour, 0, 0) {} +private: + int hour_, minute_, second_; +}; +``` + +Делегирующий конструктор **НЕ** может быть рекурсивным. + +### Ключевое слово `default` (_С++11_) + +С помощью ключевого слова `default` можно явно попросить компилятор сгенерировать +конструктор (деструктор), указав после сигнатуры `= default`. Это более выразительно, +чем писать `{}` для конструктора по умолчанию. Рекомендуется к использованию. + +```c++ +class Value { +public: + Value(int x) : x_(x) {} + Value() = default; + Value(const Value& other) = default; + Value(Value&& other) = default; + Value& operator=(const Value& other) = default; + Value& operator=(Value&& other) = default; + ~Value() = default; +private: + int x = 0; +}; +``` + +### Ключевое слово `delete` (_С++11_) + +С помощью ключевого слова `delete` можно явно попросить компилятор удалить функцию +(запретить её использование), указав после сигнатуры `= delete`. Это более выразительно, +чем прятать конструкторы в приватную область класса. Рекомендуется к использованию. + +Можно использовать не только для конструкторов, деструкторов, но и для любых методов, +операторов, шаблонных функций, функций вне классов. + +```c++ +class Value { +public: + Value(int x) : x_(x) {} + Value() = delete; + Value(const Value&) = delete; + Value& operator=(const Value&) = delete; +private: + int x = 0; +}; +``` + +Например, если класс не подразумевает сравнения на равенство или других операторов +можно явно указать для них `delete`. + +### Методы + +Внутри класса можно определять функции, которые могут работать с полями класса, в том +числе закрытыми. Данные функции называются методы. + +Синтаксис аналогичен определению обычным функциям. + +Публичный метод можно вызвать через операторы `.` для экземпляра и `->` для указателяю. + +Приватные методы, можно вызывать внутри класса. + +Можно вызывать методы в списках инициализации. Например, метод, который будет +контролировать допустимость значения или выполнять дополнительные преобразования. + +### Определение методов вне класса + +Методы можно объявить внутри класса, а определить снаружи класса. Содержимое +класса имеет свою область видимости. Для определения снаружи класса перед именем +конструктора, метода, оператора используется имя класса и оператор разрешения области +видимости `::` + +```c++ +class Time { +public: + Time(); + Time(int hours, int minutes, int seconds = 0); + int GetHours(); + void SetHours(int hours); +private: + int hours_ = 0; + int minutes_ = 0; + int seconds_ = 0; +}; + +Time::Time() = default; +Time::Time(int hours, int minutes, int seconds) + : hours_(hours), minutes_(minutes), seconds_(seconds) {} + +int Time::GetHours() { return hours; } +void Time::SetHours(int hours) { hours_ += hours; } +``` + +Аргументы методов, имеющие значения по умолчанию указываются только при объявлении, +при определении нельзя указать значения по умолчанию + +### CV-квалификация методов + +Методы могут иметь CV-квалификацию. Методы, которые не изменяют полей класса, а только +предоставляют информацию о них следует помечать квалификатором `const` после сигнатуры +и перед телом метода: + +```c++ +class Size { +public: + size_t GetSize() const { return size; }; + void AddSize(size_t size) { size_ += size; }; +private: + size_t size_ = 0; +}; +``` + +Методы помеченные квалификатором `const` можно вызывать у константных объектов класса. +Компилятор отслеживает, что в данном методе нет измененеий полей класса. + +Методы можно перегрузить только по квалификатору `const`. + +Не изменяет поля класса и может быть вызван для константного объекта: + +```c++ +int Class::foo() const; +``` + +Может изменять поля класса и может быть вызван для `volatile` объекта: + +```c++ +int Class::foo() volatile; +``` + +Может быть вызван как для `const`, так и для `volatile` объекта, так и для +`const volatile` объекта: + +```c++ +int Class::foo() const volatile; +``` + +### Оператор преобразования + +В классе возможно определить оператор преобразования, который позволяет преобразовывать +пользовательский класс в другой тип. + +Синтаксис: ` operator () const {}` + +- `` - можно запретить неявное преобразование +- `` - тип к которому выполняется приведение + +Рекомендуется помечать `const` поскольку данный оператор не должен менять полей класса +и вызываться от констант данного класса. + +Как правило рекомендуется запрещать неявное преобразование к типу (использовать +`explicit`), поскольку можно обнаружить много неожиданных мест в коде, где неявно +произведено преобразование. + +Исключением обычно является оператор `bool` для удобства использования в условиях. + +### Перегрузка операторов внутри класса + +Поскольку первым аргументом неявно передается ключевое слово `this`, то перегрузка +бинарных операторов внутри класса имеет один аргумент: + +```c++ +Class& operator+=(const Class& other); +Class& operator-=(const Class& other); +Class& operator*=(const Class& other); +Class& operator/=(const Class& other); +``` + +Операторы арифмесстических операций часто переопределяют на основе работы присваивающих +операторов: + +```c++ +Class operator+(const Class& other) const { + Class result = *this; // copy ctor + result += other; // operator += + return result; +} +``` + +Операторы префиксного и постфиксного инкремента/декремента переопределяются +следующим образом: + +```c++ +Class& operator++(); // ++obj +Class operator++(int); // obj++ +Class& operator--(); // --obj +Class operator--(int); // obj-- +``` +- постфиксный оператор возвращает копию, поэтому у возвращаемого значения нет `&` + +### Перегрузка операторов вне класса + +Операторы можно перегрузить вне класса, тогда сигнатура перегружаемого оператора +пишется в привычной манере. Но для реализации таких операторов у класса должны быть +методы задающие и считывающие значение полей (геттеры и сеттеры). Бывает, что их нет, +тогда перегрузить класс не получится или получится на основе определенных операторов +составного присваивания внутри класса. + +Перегрузка инкремента и декремента вне класса: + +```c++ +Class& operator++(const Class& obj); // ++obj +Class operator++(const Class& obj, int); // obj++ +Class& operator--(const Class& obj); // --obj +Class operator--(const Class& obj, int); // obj-- +``` + +### Ключевое слово `friend` + +Внутри класса с помощью ключевого слова `friend` (_friend declaration_) можно +объявить дружественную функцию, класс или дружественный метод другого класса. + +Сущности объявленные дружественными будут иметь доступ к `private` и `protected` +полям класса. + +Дружественность работает в одностороннем порядке. + +```c++ +friend void SomeMethod(int); +friend struct SomeStruct; +friend class SomeClass; +friend OtherClass; // C++11 +friend int OtherClass::Method(); +``` + +### Ключевое слово `mutable` + +Спецификатор типа `mutable` разрешает изменять поле класса, объявленное с ним, +даже в константных методах и для константных объектов. + +Например, это может быть поле представляющее собой счетчик операций и необходимо его +изменять даже в константном методе. + +Также может использоваться в лямбда-выражениях \ No newline at end of file diff --git a/04_week/04_class.pdf b/04_week/04_class.pdf new file mode 100644 index 0000000000000000000000000000000000000000..50a488d9fcab3609ae8817ce4684647091ae75d6 GIT binary patch literal 251118 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 literal 0 HcmV?d00001 diff --git a/04_week/CMakeLists.txt b/04_week/CMakeLists.txt new file mode 100644 index 00000000..0531237e --- /dev/null +++ b/04_week/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.14) # Минимальная требуемая версия CMake +project(04_week) # Необходим для инициализации cmake + +set(CMAKE_CXX_STANDARD 20) # Версия стандарта C++ +set(CMAKE_CXX_STANDARD_REQUIRED ON) # Гарантирует использование указанной версии стандарта + +set(EXAMPLES_DIR examples) # Определим переменную с именем директории +set(TASKS_DIR tasks) + +add_subdirectory(tasks) + +# Создать исполняемый файл для каждого примера +if (BUILD_EXAMPLES_04_WEEK) +# add_example(struct_examples ${EXAMPLES_DIR}/struct_examples.cpp) +endif() \ No newline at end of file diff --git a/grading/deadlines.json b/grading/deadlines.json index 7c07c7e8..ac7682be 100644 --- a/grading/deadlines.json +++ b/grading/deadlines.json @@ -64,5 +64,51 @@ "max_score": 200, "deadline": "2025-12-09 23:59", "description": "Форматированный вывод массива" + }, + + "data_stats": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Статистика данных" + }, + "unique": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Уникальные элементы" + }, + "range": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Диапазон элементов" + }, + "minmax": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Минимум и максимум" + }, + "find_all": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Найти все элементы" + }, + "os_overload": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Перегрузка оператора вывода" + }, + "easy_compare": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Оператор сравнения" + }, + "filter": { + "max_score": 100, + "deadline": "2025-12-18 23:59", + "description": "Фильтрация данных" + }, + "enum_operators": { + "max_score": 200, + "deadline": "2025-12-18 23:59", + "description": "Переопределение побитовых операторов" } } \ No newline at end of file From 43dcac3daa6086e1fd21e8d56feaa86c6751fffd Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 19 Dec 2025 22:34:38 +0500 Subject: [PATCH 27/44] data_stats --- 03_week/tasks/data_stats/data_stats.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/03_week/tasks/data_stats/data_stats.cpp b/03_week/tasks/data_stats/data_stats.cpp index b941c211..e1b531f5 100644 --- a/03_week/tasks/data_stats/data_stats.cpp +++ b/03_week/tasks/data_stats/data_stats.cpp @@ -1,11 +1,21 @@ -#include - +#include +#include struct DataStats { - double avg = 0.0; - double sd = 0.0; -}; + double avg; + double sd;}; -/* return_type */ CalculateDataStats(/* args */) { - throw std::runtime_error{"Not implemented"}; +DataStats CalculateDataStats(const std::vector& data) { + if (data.empty()) { + return {0.0, 0.0};} + double sum = 0.0; + for (int x : data) { + sum += x;} + double mean = sum / data.size(); + double variance_sum = 0.0; + for (int x : data) { + variance_sum += (x - mean) * (x - mean);} + double variance = variance_sum / data.size(); + double stddev = std::sqrt(variance); + return {mean, stddev}; } From 465b6f1575bf661a4bc52d3e003e696566467433 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 19 Dec 2025 22:50:58 +0500 Subject: [PATCH 28/44] Fix CMakeLists.txt for 04_week temporarily --- 04_week/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/04_week/CMakeLists.txt b/04_week/CMakeLists.txt index 0531237e..19ff41e8 100644 --- a/04_week/CMakeLists.txt +++ b/04_week/CMakeLists.txt @@ -7,7 +7,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) # Гарантирует использов set(EXAMPLES_DIR examples) # Определим переменную с именем директории set(TASKS_DIR tasks) -add_subdirectory(tasks) +#add_subdirectory(tasks) # Создать исполняемый файл для каждого примера if (BUILD_EXAMPLES_04_WEEK) From 3e84f50477eb1b6f667b66c24f4e8a00fa9128d0 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 19 Dec 2025 22:55:29 +0500 Subject: [PATCH 29/44] easy_compar --- 03_week/tasks/easy_compare/easy_compare.cpp | 46 +++++++++++++++++---- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/03_week/tasks/easy_compare/easy_compare.cpp b/03_week/tasks/easy_compare/easy_compare.cpp index dd5cb7f6..92f3a688 100644 --- a/03_week/tasks/easy_compare/easy_compare.cpp +++ b/03_week/tasks/easy_compare/easy_compare.cpp @@ -1,16 +1,46 @@ +#include #include - struct Date { - unsigned year; - unsigned month; - unsigned day; -}; - + unsigned year = 0; + unsigned month = 0; + unsigned day = 0; + Date() = default; + Date(unsigned y, unsigned m, unsigned d) + : year(y), month(m), day(d) {}}; +bool operator==(const Date& lhs, const Date& rhs) { + return std::tie(lhs.year, lhs.month, lhs.day) == + std::tie(rhs.year, rhs.month, rhs.day);} +bool operator!=(const Date& lhs, const Date& rhs) { + return !(lhs == rhs);} +bool operator<(const Date& lhs, const Date& rhs) { + return std::tie(lhs.year, lhs.month, lhs.day) < + std::tie(rhs.year, rhs.month, rhs.day);} +bool operator<=(const Date& lhs, const Date& rhs) { + return !(rhs < lhs);} +bool operator>(const Date& lhs, const Date& rhs) { + return rhs < lhs;} +bool operator>=(const Date& lhs, const Date& rhs) { + return !(lhs < rhs);} struct StudentInfo { size_t id; char mark; int score; unsigned course; - Date birth_date; -}; \ No newline at end of file + Date birth_date;}; +bool operator==(const StudentInfo& lhs, const StudentInfo& rhs) { + return lhs.mark == rhs.mark && + lhs.score == rhs.score;} +bool operator!=(const StudentInfo& lhs, const StudentInfo& rhs) { + return !(lhs == rhs);} +bool operator<(const StudentInfo& lhs, const StudentInfo& rhs) { + if (lhs.mark != rhs.mark) + return lhs.mark > rhs.mark; + if (lhs.score != rhs.score) + return lhs.score < rhs.score; + if (lhs.course != rhs.course) + return lhs.course > rhs.course; + if (lhs.birth_date != rhs.birth_date) + return lhs.birth_date < rhs.birth_date; + return false; +} From e805cf114497e039681f2275fa5e86d203749f05 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 19 Dec 2025 22:59:58 +0500 Subject: [PATCH 30/44] enum_operators.cpp --- .../tasks/enum_operators/enum_operators.cpp | 75 +++++++++++++------ 1 file changed, 54 insertions(+), 21 deletions(-) diff --git a/03_week/tasks/enum_operators/enum_operators.cpp b/03_week/tasks/enum_operators/enum_operators.cpp index a539be38..bae3d284 100644 --- a/03_week/tasks/enum_operators/enum_operators.cpp +++ b/03_week/tasks/enum_operators/enum_operators.cpp @@ -1,4 +1,5 @@ -#include +#include +#include #include enum class CheckFlags : uint8_t { @@ -9,25 +10,57 @@ enum class CheckFlags : uint8_t { CERT = (1 << 3), KEYS = (1 << 4), DEST = (1 << 5), - ALL = TIME | DATE | USER | CERT | KEYS | DEST -}; + ALL = TIME | DATE | USER | CERT | KEYS | DEST}; +CheckFlags operator|(CheckFlags lhs, CheckFlags rhs) { + uint8_t result = + static_cast(lhs) | + static_cast(rhs); + result &= static_cast(CheckFlags::ALL); + return static_cast(result);} +bool operator&(CheckFlags lhs, CheckFlags rhs) { + uint8_t l = static_cast(lhs) & + static_cast(CheckFlags::ALL); + uint8_t r = static_cast(rhs) & + static_cast(CheckFlags::ALL); + if (l == 0 || r == 0) { + return false; } + uint8_t inter = l & r; + return inter == l || inter == r;} +CheckFlags operator^(CheckFlags lhs, CheckFlags rhs) { + uint8_t result = + static_cast(lhs) ^ + static_cast(rhs); -/* return_type */ operator|(/* args */) { - throw std::runtime_error{"Not implemented"}; -} - -/* return_type */ operator&(/* args */) { - throw std::runtime_error{"Not implemented"}; -} - -/* return_type */ operator^(/* args */) { - throw std::runtime_error{"Not implemented"}; -} - -/* return_type */ operator~(/* args */) { - throw std::runtime_error{"Not implemented"}; -} - -/* return_type */ operator<<(/* args */) { - throw std::runtime_error{"Not implemented"}; + result &= static_cast(CheckFlags::ALL); + return static_cast(result);} +CheckFlags operator~(CheckFlags f) { + uint8_t result = ~static_cast(f); + result &= static_cast(CheckFlags::ALL); + return static_cast(result);} +std::ostream& operator<<(std::ostream& os, CheckFlags f) { + uint8_t mask = static_cast(f) & + static_cast(CheckFlags::ALL); + if (mask == 0) { + os << "NONE"; + return os;} + struct FlagName { + CheckFlags flag; + const char* name;}; + static const std::vector flags = { + {CheckFlags::TIME, "TIME"}, + {CheckFlags::DATE, "DATE"}, + {CheckFlags::USER, "USER"}, + {CheckFlags::CERT, "CERT"}, + {CheckFlags::KEYS, "KEYS"}, + {CheckFlags::DEST, "DEST"}}; + bool first = true; + for (const auto& fn : flags) { + if (mask & static_cast(fn.flag)) { + if (!first) { + os << ", "; + } + os << fn.name; + first = false;} + } + return os; } From 109d2c5ba1d7aaff408fcbed388e20535344fafe Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 19 Dec 2025 23:07:10 +0500 Subject: [PATCH 31/44] filter --- 03_week/tasks/filter/filter.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/03_week/tasks/filter/filter.cpp b/03_week/tasks/filter/filter.cpp index 6648cb39..1479afb8 100644 --- a/03_week/tasks/filter/filter.cpp +++ b/03_week/tasks/filter/filter.cpp @@ -1,6 +1,13 @@ -#include +#include - -/* return_type */ Filter(/* args */) { - throw std::runtime_error{"Not implemented"}; -} \ No newline at end of file +void Filter(std::vector& v, bool (*pred)(int)) { + if (pred == nullptr) { + return;} + size_t write = 0; + for (size_t read = 0; read < v.size(); ++read) { + if (pred(v[read])) { + v[write] = v[read]; + ++write;} + } + v.resize(write); +} From 8a5d6b84a104d3ca9c656159d83745a0d8e55fea Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 19 Dec 2025 23:09:42 +0500 Subject: [PATCH 32/44] find_all.cpp --- 03_week/tasks/find_all/find_all.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/03_week/tasks/find_all/find_all.cpp b/03_week/tasks/find_all/find_all.cpp index 74f393b2..b4f8a429 100644 --- a/03_week/tasks/find_all/find_all.cpp +++ b/03_week/tasks/find_all/find_all.cpp @@ -1,6 +1,15 @@ +#include #include - -/* return_type */ FindAll(/* args */) { - throw std::runtime_error{"Not implemented"}; -} \ No newline at end of file +std::vector FindAll(const std::vector& v, bool (*pred)(int)) { + std::vector result; + if (!pred) { + return result;} + result.reserve(v.size()); + for (size_t i = 0; i < v.size(); ++i) { + if (pred(v[i])) { + result.push_back(i);} + } + result.shrink_to_fit(); + return result; +} From 2f9c89a4916df3c7911143986429eb923071dd5f Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 19 Dec 2025 23:14:48 +0500 Subject: [PATCH 33/44] minmax --- 03_week/tasks/minmax/minmax.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/03_week/tasks/minmax/minmax.cpp b/03_week/tasks/minmax/minmax.cpp index c2869799..9f95b2fa 100644 --- a/03_week/tasks/minmax/minmax.cpp +++ b/03_week/tasks/minmax/minmax.cpp @@ -1,6 +1,17 @@ +#include +#include #include - -/* return_type */ MinMax(/* args */) { - throw std::runtime_error{"Not implemented"}; +auto MinMax(const std::vector& v) { + if (v.empty()) { + return std::make_pair(v.end(), v.end());} + auto min_it = v.begin(); + auto max_it = v.begin(); + for (auto it = v.begin(); it != v.end(); ++it) { + if (*it < *min_it) { + min_it = it;} + if (*it >= *max_it) { + max_it = it;} + } + return std::make_pair(min_it, max_it); } From b9c160639bc338e3e998bddf9a336142f864d5e5 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 19 Dec 2025 23:18:38 +0500 Subject: [PATCH 34/44] os_overload --- 03_week/tasks/os_overload/os_overload.cpp | 51 ++++++++++++++++------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/03_week/tasks/os_overload/os_overload.cpp b/03_week/tasks/os_overload/os_overload.cpp index e473418d..cbdb423f 100644 --- a/03_week/tasks/os_overload/os_overload.cpp +++ b/03_week/tasks/os_overload/os_overload.cpp @@ -1,21 +1,44 @@ -#include +#include #include -#include - struct Coord2D { - int x; - int y; -}; - + int x = 0; + int y = 0; + Coord2D() = default; + Coord2D(int x_, int y_) : x(x_), y(y_) {}}; +std::ostream& operator<<(std::ostream& os, const Coord2D& coord) { + os << "(" << coord.x << ", " << coord.y << ")"; + return os;} struct Circle { Coord2D coord; - unsigned radius; -}; - -using CircleRegion = std::pair; + unsigned int radius = 1; + Circle() = default; + Circle(const Coord2D& c, unsigned int r = 1) : coord(c), radius(r) {} + bool isEmpty() const { return radius == 0; }}; +std::ostream& operator<<(std::ostream& os, const Circle& c) { + if (c.isEmpty()) { + os << "circle[]";} + else { + os << "circle[" << c.coord << ", r = " << c.radius << "]";} + return os;} +struct CircleRegion { + Circle circle; + bool flag = true; // true = '+', false = '-' + CircleRegion(const Circle& c, bool f) : circle(c), flag(f) {} + CircleRegion(const std::pair& p) : circle(p.first), flag(p.second) {}}; +std::ostream& operator<<(std::ostream& os, const CircleRegion& region) { + os << (region.flag ? "+" : "-") << region.circle; + return os;} using CircleRegionList = std::vector; - -/* return_type */ operator<<(/* args */) { - throw std::runtime_error{"Not implemented"}; +std::ostream& operator<<(std::ostream& os, const CircleRegionList& list) { + if (list.empty()) { + os << "{}"; + return os;} + os << "{\n"; + for (size_t i = 0; i < list.size(); ++i) { + os << "\t" << list[i]; + if (i + 1 != list.size()) os << ","; + os << "\n";} + os << "}"; + return os; } From f952ce2dbfaeb913c21b30374580f4e94e088bc9 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 19 Dec 2025 23:21:45 +0500 Subject: [PATCH 35/44] range --- 03_week/tasks/range/range.cpp | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/03_week/tasks/range/range.cpp b/03_week/tasks/range/range.cpp index d2085495..7229c955 100644 --- a/03_week/tasks/range/range.cpp +++ b/03_week/tasks/range/range.cpp @@ -1,7 +1,26 @@ -#include #include - -std::vector Range(int from, int to, int step) { - throw std::runtime_error{"Not implemented"}; +std::vector Range(int from, int to, int step = 1) { + std::vector result;т + if (step == 0) { + return result;} + if ((from < to && step < 0) || (from > to && step > 0)) { + return result;} + int count = 0; + if (step > 0) { + for (int i = from; i < to; i += step) { + ++count;} + } else { + for (int i = from; i > to; i += step) { + ++count;} + } + result.reserve(count); + if (step > 0) { + for (int i = from; i < to; i += step) { + result.push_back(i);} + } else { + for (int i = from; i > to; i += step) { + result.push_back(i);} + } + return result; } From 6e2d037b1004f8b046750ed3ad958bd89e677d8e Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 19 Dec 2025 23:24:14 +0500 Subject: [PATCH 36/44] range --- 03_week/tasks/range/range.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/03_week/tasks/range/range.cpp b/03_week/tasks/range/range.cpp index 7229c955..6da0ccdd 100644 --- a/03_week/tasks/range/range.cpp +++ b/03_week/tasks/range/range.cpp @@ -1,5 +1,6 @@ #include + std::vector Range(int from, int to, int step = 1) { std::vector result;т if (step == 0) { From 090484b753ce2b27d14ef082c83731db2fccf1fe Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 19 Dec 2025 23:26:11 +0500 Subject: [PATCH 37/44] update range --- 03_week/tasks/range/range.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/03_week/tasks/range/range.cpp b/03_week/tasks/range/range.cpp index 6da0ccdd..8abec444 100644 --- a/03_week/tasks/range/range.cpp +++ b/03_week/tasks/range/range.cpp @@ -2,7 +2,7 @@ std::vector Range(int from, int to, int step = 1) { - std::vector result;т + std::vector result; if (step == 0) { return result;} if ((from < to && step < 0) || (from > to && step > 0)) { From 7132675456359b1290b93058385f946bae970f25 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 19 Dec 2025 23:29:26 +0500 Subject: [PATCH 38/44] unique --- 03_week/tasks/unique/unique.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/03_week/tasks/unique/unique.cpp b/03_week/tasks/unique/unique.cpp index 9d2545bb..7bed6f7f 100644 --- a/03_week/tasks/unique/unique.cpp +++ b/03_week/tasks/unique/unique.cpp @@ -1,6 +1,15 @@ -#include #include -/* return_type */ Unique(/* args */) { - throw std::runtime_error{"Not implemented"}; +std::vector Unique(const std::vector& values) { + std::vector result; + if (values.empty()) { + return result;} + result.reserve(values.size()); + result.push_back(values[0]); + for (size_t i = 1; i < values.size(); ++i) { + if (values[i] != values[i - 1]) { + result.push_back(values[i]); } + } + result.shrink_to_fit(); + return result; } From 1056207d7d44d138ae2114e1ef36342ab390184d Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 26 Dec 2025 21:42:38 +0500 Subject: [PATCH 39/44] phasor --- 04_week/tasks/phasor/phasor.cpp | 80 +++++++++++++++++++++++++++++++-- 1 file changed, 77 insertions(+), 3 deletions(-) diff --git a/04_week/tasks/phasor/phasor.cpp b/04_week/tasks/phasor/phasor.cpp index 3ec1b9ad..1c6da90d 100644 --- a/04_week/tasks/phasor/phasor.cpp +++ b/04_week/tasks/phasor/phasor.cpp @@ -1,10 +1,84 @@ - +#include +#include +#include struct ExpTag {}; struct DegTag {}; struct AlgTag {}; - class Phasor { - +private: + double re_; + double im_; +public: + Phasor() : re_(0.0), im_(0.0) {} + Phasor(double mag, double phase_rad) { SetPolar(mag, phase_rad); } + Phasor(double mag, double phase_rad, ExpTag) : Phasor(mag, phase_rad) {} + Phasor(double mag, double phase_deg, DegTag) { + double rad = phase_deg * M_PI / 180.0; + SetPolar(mag, rad);} + Phasor(double real, double imag, AlgTag) : re_(real), im_(imag) {} + void SetPolar(double mag, double phase_rad) { + re_ = mag * std::cos(phase_rad); + im_ = mag * std::sin(phase_rad);} + void SetCartesian(double real, double imag) { re_ = real; im_ = imag; } + double Magnitude() const { return std::hypot(re_, im_); } + double Phase() const { + double angle = std::atan2(im_, re_); + return angle; } + double PhaseDeg() const { + double deg = Phase() * 180.0 / M_PI; + if (deg <= -180.0) deg += 360.0; + else if (deg > 180.0) deg -= 360.0; + return deg;} + double Real() const { return re_; } + double Imag() const { return im_; } + double Abs() const { return Magnitude(); } + double Angle() const { return Phase(); } + double AngleDeg() const { return PhaseDeg(); } + Phasor Conj() const { return Phasor(re_, -im_, AlgTag()); } + Phasor Inv() const { + double mag2 = re_*re_ + im_*im_; + return Phasor(re_/mag2, -im_/mag2, AlgTag());} + Phasor& operator+=(const Phasor& rhs) { re_+=rhs.re_; im_+=rhs.im_; return *this; } + Phasor& operator-=(const Phasor& rhs) { re_-=rhs.re_; im_-=rhs.im_; return *this; } + Phasor& operator*=(const Phasor& rhs) { + double old_re = re_; + re_ = old_re*rhs.re_ - im_*rhs.im_; + im_ = old_re*rhs.im_ + im_*rhs.re_; + return *this;} + Phasor& operator/=(const Phasor& rhs) { + double denom = rhs.re_*rhs.re_ + rhs.im_*rhs.im_; + double old_re = re_; + re_ = (old_re*rhs.re_ + im_*rhs.im_) / denom; + im_ = (im_*rhs.re_ - old_re*rhs.im_) / denom; + return *this;} + Phasor& operator+=(double rhs) { re_+=rhs; return *this; } + Phasor& operator-=(double rhs) { re_-=rhs; return *this; } + Phasor& operator*=(double rhs) { re_*=rhs; im_*=rhs; return *this; } + Phasor& operator/=(double rhs) { re_/=rhs; im_/=rhs; return *this; } + Phasor operator-() const { return Phasor(-re_, -im_, AlgTag()); } }; +inline Phasor operator+(Phasor lhs, const Phasor& rhs){ return lhs+=rhs; } +inline Phasor operator-(Phasor lhs, const Phasor& rhs){ return lhs-=rhs; } +inline Phasor operator*(Phasor lhs, const Phasor& rhs){ return lhs*=rhs; } +inline Phasor operator/(Phasor lhs, const Phasor& rhs){ return lhs/=rhs; } +inline Phasor operator+(Phasor lhs, double rhs){ return lhs+=rhs; } +inline Phasor operator+(double lhs, const Phasor& rhs){ return Phasor(lhs,0,AlgTag())+rhs; } +inline Phasor operator-(Phasor lhs, double rhs){ return lhs-=rhs; } +inline Phasor operator-(double lhs, const Phasor& rhs){ return Phasor(lhs,0,AlgTag())-rhs; } +inline Phasor operator*(Phasor lhs, double rhs){ return lhs*=rhs; } +inline Phasor operator*(double lhs, const Phasor& rhs){ return Phasor(lhs,0,AlgTag())*rhs; } +inline Phasor operator/(Phasor lhs, double rhs){ return lhs/=rhs; } +inline Phasor operator/(double lhs, const Phasor& rhs){ return Phasor(lhs,0,AlgTag())/rhs; } +inline bool operator==(const Phasor& lhs,const Phasor& rhs){ return lhs.Real()==rhs.Real() && lhs.Imag()==rhs.Imag(); } +inline bool operator!=(const Phasor& lhs,const Phasor& rhs){ return !(lhs==rhs); } +inline Phasor MakePhasorCartesian(double r,double i){ return Phasor(r,i,AlgTag()); } +inline Phasor MakePhasorPolar(double m,double p){ return Phasor(m,p,ExpTag()); } +inline Phasor MakePhasorPolarDeg(double m,double d){ return Phasor(m,d,DegTag()); } +inline std::ostream& operator<<(std::ostream& os,const Phasor& p){ + os << std::fixed << std::setprecision(3) + << p.Magnitude() << "*e(j*" << p.PhaseDeg() << ") [" + << p.Real() << " + j*" << p.Imag() << "]"; + return os; +} From 3a3eb3f84482abb2bfaa57bf3b6f6e3cd3da1d6e Mon Sep 17 00:00:00 2001 From: karskanovas <155314713+karskanovas@users.noreply.github.com> Date: Fri, 26 Dec 2025 21:50:09 +0500 Subject: [PATCH 40/44] Delete CMakeLists.txt.save --- CMakeLists.txt.save | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 CMakeLists.txt.save diff --git a/CMakeLists.txt.save b/CMakeLists.txt.save deleted file mode 100644 index 2615c5e3..00000000 --- a/CMakeLists.txt.save +++ /dev/null @@ -1,35 +0,0 @@ -cmake_minimum_required(VERSION 3.14) -project(psds_cpp) - -set(CMAKE_CXX_STANDARD 20) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -option(BUILD_EXAMPLES "Build examples" OFF) -option(BUILD_EXAMPLES_01_WEEK "Build examplesoption(BUILD_EXAMPLES_02_WEEK "Build examples for 02_week" OFF) - -list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") -find_package(GoogleTest REQUIRED) - -set(CMAKE_BINARY_TASKS_DIR ${CMAKE_BINARY_DIR}/tasks) - -include(cmake/TestSolution.cmake) -include(cmake/AsanFlags.cmake) - -function(add_week NAME) - if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${NAME}) - add_subdirectory(${NAME}) - endif() -endfunction() - -add_executable(psds_cpp main.cpp) - -add_week(01_week) -add_week(02_week) -add_week(03_week) -add_week(04_week) -add_week(05_week) -add_week(06_week) -add_week(07_week) -add_week(08_week) -add_week(09_week) -add_week(10_week) From befa598d6c8c6fb877cb094a2c48e48cdd645546 Mon Sep 17 00:00:00 2001 From: karskanovas <155314713+karskanovas@users.noreply.github.com> Date: Fri, 26 Dec 2025 22:05:12 +0500 Subject: [PATCH 41/44] Update CMakeLists.txt --- 04_week/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/04_week/CMakeLists.txt b/04_week/CMakeLists.txt index 19ff41e8..d56cf274 100644 --- a/04_week/CMakeLists.txt +++ b/04_week/CMakeLists.txt @@ -7,9 +7,9 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) # Гарантирует использов set(EXAMPLES_DIR examples) # Определим переменную с именем директории set(TASKS_DIR tasks) -#add_subdirectory(tasks) +add_subdirectory(tasks) # Создать исполняемый файл для каждого примера if (BUILD_EXAMPLES_04_WEEK) # add_example(struct_examples ${EXAMPLES_DIR}/struct_examples.cpp) -endif() \ No newline at end of file +endif() From 660711220fa21cde298cc07919aa32bd3146647c Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 26 Dec 2025 22:09:13 +0500 Subject: [PATCH 42/44] queue --- 04_week/tasks/queue/queue.cpp | 68 +++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 3 deletions(-) diff --git a/04_week/tasks/queue/queue.cpp b/04_week/tasks/queue/queue.cpp index 2a9f8493..f02f1994 100644 --- a/04_week/tasks/queue/queue.cpp +++ b/04_week/tasks/queue/queue.cpp @@ -1,6 +1,68 @@ #include - +#include +#include +#include class Queue { - -}; +private: + std::vector inStack_; + std::vector outStack_; + void Transfer() { + if (outStack_.empty()) { + while (!inStack_.empty()) { + outStack_.push_back(inStack_.back()); + inStack_.pop_back();} + } + } +public: + Queue() = default; + Queue(const std::stack& s) { + std::stack temp = s; + while (!temp.empty()) { + inStack_.push_back(temp.top()); + temp.pop();} + std::reverse(inStack_.begin(), inStack_.end());} + Queue(const std::vector& v) : inStack_(v) {} + Queue(std::initializer_list il) : inStack_(il) {} + explicit Queue(size_t capacity) { + inStack_.reserve(capacity); + outStack_.reserve(capacity);} + void Push(int value) { + inStack_.push_back(value);} + bool Pop() { + Transfer(); + if (outStack_.empty()) return false; + outStack_.pop_back(); + return true;} + int& Front() { + Transfer(); + return outStack_.back();} + const int& Front() const { + return const_cast(this)->Front();} + int& Back() { + if (!inStack_.empty()) return inStack_.back(); + Transfer(); + return outStack_.front(); } + const int& Back() const { + return const_cast(this)->Back();} + bool Empty() const { + return inStack_.empty() && outStack_.empty();} + size_t Size() const { + return inStack_.size() + outStack_.size();} + void Clear() { + inStack_.clear(); + outStack_.clear();} + void Swap(Queue& other) { + std::swap(inStack_, other.inStack_); + std::swap(outStack_, other.outStack_);} + bool operator==(const Queue& other) const { + Queue copy1 = *this; + Queue copy2 = other; + while (!copy1.Empty() && !copy2.Empty()) { + if (copy1.Front() != copy2.Front()) return false; + copy1.Pop(); + copy2.Pop();} + return copy1.Empty() && copy2.Empty();} + bool operator!=(const Queue& other) const { + return !(*this == other);} +}; \ No newline at end of file From fc2bec1248cb1afb246ecf882c920b279ed2f011 Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 26 Dec 2025 22:19:45 +0500 Subject: [PATCH 43/44] ring_buffer --- 04_week/tasks/ring_buffer/ring_buffer.cpp | 90 ++++++++++++++++++++++- 1 file changed, 88 insertions(+), 2 deletions(-) diff --git a/04_week/tasks/ring_buffer/ring_buffer.cpp b/04_week/tasks/ring_buffer/ring_buffer.cpp index e2b57ba2..af9d1828 100644 --- a/04_week/tasks/ring_buffer/ring_buffer.cpp +++ b/04_week/tasks/ring_buffer/ring_buffer.cpp @@ -1,6 +1,92 @@ #include - +#include +#include class RingBuffer { - +private: + std::vector buffer; + size_t start = 0; + size_t end = 0; + size_t count = 0; +public: + RingBuffer(size_t capacity) + : buffer(capacity == 0 ? 1 : capacity), start(0), end(0), count(0) {} + RingBuffer(size_t capacity, int value) + : buffer(capacity == 0 ? 1 : capacity, value), start(0), end(0), count(buffer.size()) {} + RingBuffer(std::initializer_list list) + : buffer(list.size() == 0 ? 1 : list.size()), start(0), end(list.size() % (list.size() == 0 ? 1 : list.size())), count(list.size()) + { + if (!list.size()) { + end = 0; + count = 0; + } else { + size_t i = 0; + for (int v : list) { + buffer[i++] = v;} + } + } + void Push(int value) { + buffer[end] = value; + end = (end + 1) % buffer.size(); + if (count < buffer.size()) { + ++count; + } else { + start = (start + 1) % buffer.size();} + } + bool TryPush(int value) { + if (Full()) return false; + buffer[end] = value; + end = (end + 1) % buffer.size(); + ++count; + return true;} + void Pop() { + if (Empty()) return; + start = (start + 1) % buffer.size(); + --count;} + bool TryPop(int &value) { + if (Empty()) return false; + value = buffer[start]; + start = (start + 1) % buffer.size(); + --count; + return true;} + int& operator[](size_t index) { + return buffer[(start + index) % buffer.size()];} + const int& operator[](size_t index) const { + return buffer[(start + index) % buffer.size()];} + int& Front() { return buffer[(end + buffer.size() - 1) % buffer.size()]; } + const int& Front() const { return buffer[(end + buffer.size() - 1) % buffer.size()]; } + int& Back() { return buffer[start]; } + const int& Back() const { return buffer[start]; } + bool Empty() const { return count == 0; } + bool Full() const { return count == buffer.size(); } + size_t Size() const { return count; } + size_t Capacity() const { return buffer.size(); } + void Clear() { + start = 0; + end = 0; + count = 0;} + void Resize(size_t new_capacity) { + if (new_capacity == 0) new_capacity = 1; + std::vector new_buffer(new_capacity); + size_t new_count = std::min(count, new_capacity); + for (size_t i = 0; i < new_count; ++i) { + new_buffer[i] = (*this)[count - new_count + i];} + buffer = std::move(new_buffer); + start = 0; + count = new_count; + end = new_count % buffer.size();} + std::vector Vector() const { + std::vector result(count); + for (size_t i = 0; i < count; ++i) { + result[i] = (*this)[i];} + return result;} + RingBuffer(const RingBuffer& other) + : buffer(other.buffer), start(other.start), end(other.end), count(other.count) {} + RingBuffer& operator=(const RingBuffer& other) { + if (this != &other) { + buffer = other.buffer; + start = other.start; + end = other.end; + count = other.count;} + return *this;} }; From e32646e1dd8935fe16838e9451a71fb0926aa1de Mon Sep 17 00:00:00 2001 From: karskanovas Date: Fri, 26 Dec 2025 22:23:00 +0500 Subject: [PATCH 44/44] stack --- 04_week/tasks/stack/stack.cpp | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/04_week/tasks/stack/stack.cpp b/04_week/tasks/stack/stack.cpp index 222e4ffc..99928186 100644 --- a/04_week/tasks/stack/stack.cpp +++ b/04_week/tasks/stack/stack.cpp @@ -1,6 +1,30 @@ #include - +#include class Stack { - +private: + std::vector data; +public: + void Push(int value) { + data.push_back(value);} + bool Pop() { + if (data.empty()) return false; + data.pop_back(); + return true;} + int& Top() { + return data.back();} + const int& Top() const { + return data.back();} + bool Empty() const { + return data.empty();} + size_t Size() const { + return data.size();} + void Clear() { + data.clear();} + void Swap(Stack& other) { + data.swap(other.data);} + bool operator==(const Stack& other) const { + return data == other.data;} + bool operator!=(const Stack& other) const { + return data != other.data;} };