From 0b4cde0695a6997e5f367b4f66ebc2688bbd2919 Mon Sep 17 00:00:00 2001 From: Andrey Velisov <76114802+MrZ0niCs@users.noreply.github.com> Date: Sun, 10 May 2026 22:57:33 +0300 Subject: [PATCH] MiniHW4-by-Vasilev-Andrey hw4 --- main.cpp | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ output.txt | 24 +++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 main.cpp create mode 100644 output.txt diff --git a/main.cpp b/main.cpp new file mode 100644 index 00000000..266b64c2 --- /dev/null +++ b/main.cpp @@ -0,0 +1,87 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +// функция для вывода вектора без циклов +void printVector(std::ofstream& out, const std::vector& vec, + const std::string& title) { + out << "--- " << title << " ---\n"; + // алгоритм std::copy для вывода элементов + std::copy(vec.begin(), vec.end(), std::ostream_iterator(out, " ")); + out << "\n\n"; +} + +int main() { + std::ofstream out_file("output.txt"); + if (!out_file.is_open()) { + std::cerr << "Failed to open output.txt\n"; + return 1; + } + + // генерация 20 чисел + std::vector numbers(20); + std::random_device rd; + std::mt19937 random_gen(rd()); + std::uniform_int_distribution dist(-50, 100); + + std::generate(numbers.begin(), numbers.end(), + [&random_gen, &dist]() { return dist(random_gen); }); + + printVector(out_file, numbers, "1. Initial generated vector"); + + // минимальный и максимальный элементы + auto min_max = std::minmax_element(numbers.begin(), numbers.end()); + out_file << "--- 2. Min and Max elements ---\n"; + out_file << "Min: " << *min_max.first << "\n"; + out_file << "Max: " << *min_max.second << "\n\n"; + + // сортировка + std::sort(numbers.begin(), numbers.end()); + printVector(out_file, numbers, "3. Sorted vector"); + + // количество положительных, отрицательных и нулевых элементов + int positive_count = std::count_if(numbers.begin(), numbers.end(), + [](int val) { return val > 0; }); + int negative_count = std::count_if(numbers.begin(), numbers.end(), + [](int val) { return val < 0; }); + int zero_count = std::count_if(numbers.begin(), numbers.end(), + [](int val) { return val == 0; }); + + out_file << "--- 4. Element counts ---\n"; + out_file << "Positive: " << positive_count << "\n"; + out_file << "Negative: " << negative_count << "\n"; + out_file << "Zeros: " << zero_count << "\n\n"; + + // среднее арифметическое всех элементов + double sum = std::accumulate(numbers.begin(), numbers.end(), 0.0); + double mean = sum / numbers.size(); + + out_file << "--- 5. Arithmetic mean ---\n"; + out_file << "Mean: " << mean << "\n\n"; + + // удаление чисел + numbers.erase(std::remove_if(numbers.begin(), numbers.end(), + [](int val) { return val % 2 == 0; }), + numbers.end()); + + printVector(out_file, numbers, "6. Vector after removing even numbers"); + + // новый вектор с уникальными значениями + std::sort(numbers.begin(), numbers.end()); + + std::vector unique_numbers; + std::unique_copy(numbers.begin(), numbers.end(), + std::back_inserter(unique_numbers)); + + printVector(out_file, unique_numbers, "7. New vector with unique values"); + + out_file.close(); + std::cout << "Processing complete. Check output.txt file.\n"; + + return 0; +} \ No newline at end of file diff --git a/output.txt b/output.txt new file mode 100644 index 00000000..99c2d9d4 --- /dev/null +++ b/output.txt @@ -0,0 +1,24 @@ +--- 1. Initial generated vector --- +63 88 13 53 -29 20 -11 79 99 6 32 32 23 76 68 89 -36 27 20 9 + +--- 2. Min and Max elements --- +Min: -36 +Max: 99 + +--- 3. Sorted vector --- +-36 -29 -11 6 9 13 20 20 23 27 32 32 53 63 68 76 79 88 89 99 + +--- 4. Element counts --- +Positive: 17 +Negative: 3 +Zeros: 0 + +--- 5. Arithmetic mean --- +Mean: 36.05 + +--- 6. Vector after removing even numbers --- +-29 -11 9 13 23 27 53 63 79 89 99 + +--- 7. New vector with unique values --- +-29 -11 9 13 23 27 53 63 79 89 99 +