/
lyapdy
/
Object_oriented_programming_cpp_318
Обзор
Документация
Войти
/
lyapdy
/
Object_oriented_programming_cpp_318
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
lab8/task_2.cpp
211 строк
6 KB
danillyapunov
tasks 7 and 8 added
30 ноя 2025, 14:31
30 ноя 2025, 14:31
5a9b53a
Код
Авторство
О чём код?
#include "task_2.h" #include <iostream> #include <random> #include <iomanip> #include <algorithm> #include <numeric> #include <vector> #include <list> // ===== ������ A ===== std::vector<int> replaceEvenElements(const std::vector<int>& vec, const std::list<int>& lst) { std::vector<int> result = vec; // ������� ����� ������ ������⮢ �� ᯨ᪠ std::vector<int> oddElements; for (int num : lst) { if (num % 2 != 0) { oddElements.push_back(num); } } // �����塞 ��� �������� ����� �� ����� �������� �� ᯨ᪠ int oddIndex = 0; for (size_t i = 0; i < result.size(); i++) { if (result[i] % 2 == 0 && oddIndex < static_cast<int>(oddElements.size())) { result[i] = oddElements[oddIndex]; oddIndex++; } } return result; } int randomInt(int min, int max) { static std::random_device rd; static std::mt19937 gen(rd()); std::uniform_int_distribution<int> dist(min, max); return dist(gen); } void generateData(std::vector<int>& vec, std::list<int>& lst, int vecSize, int lstSize) { // ������㥬 ����� vec.clear(); for (int i = 0; i < vecSize; i++) { vec.push_back(randomInt(1, 50)); } // ������㥬 ᯨ᮪ lst.clear(); for (int i = 0; i < lstSize; i++) { lst.push_back(randomInt(-100, 100)); } } void printData(const std::string& title, const std::vector<int>& data) { std::cout << title << ":\n"; for (size_t i = 0; i < data.size(); i++) { std::cout << std::setw(4) << data[i]; } std::cout << "\n\n"; } void printList(const std::string& title, const std::list<int>& data) { std::cout << title << ":\n"; for (int num : data) { std::cout << std::setw(4) << num; } std::cout << "\n\n"; } void taskA() { std::cout << "=== ������ A: ������ ���� ������⮢ ����� ===\n"; std::vector<int> myVector; std::list<int> myList; // ��⮣������ ������ generateData(myVector, myList, 15, 10); // �뢮� ��室��� ������ printData("myVector", myVector); printList("myList", myList); // �믮������ ������ � �뢮� १���� std::vector<int> mixedVector = replaceEvenElements(myVector, myList); printData("���蠭�� �����", mixedVector); } // ===== ������ B ===== void addAverageToList(std::list<double>& lst) { if (lst.empty()) { return; } // ����塞 �।��� ��䬥��� double sum = std::accumulate(lst.begin(), lst.end(), 0.0); double average = sum / lst.size(); // ������塞 � ����� ᯨ᪠ lst.push_back(average); } void printDoubleList(const std::string& title, const std::list<double>& data) { std::cout << title << ":\n"; std::cout << std::fixed << std::setprecision(2); for (double num : data) { std::cout << num << " "; } std::cout << "\n\n"; } void taskB() { std::cout << "=== ������ B: ���������� �।���� ��䬥���� � ᯨ᮪ ===\n"; std::list<double> numbers = {1.5, 2.7, 3.8, 4.2, 5.1}; std::cout << "��室�� ᯨ᮪:\n"; printDoubleList("���᮪ �ᥫ", numbers); // ������塞 �।��� ��䬥��� addAverageToList(numbers); std::cout << "�� ���������� �।���� ��䬥����:\n"; printDoubleList("���᮪ �ᥫ", numbers); } // ===== ������ C ===== void taskC() { std::cout << "=== ������ C: ���-3 ���� ��饩 ===\n"; std::vector<std::pair<int, std::string>> favorites; std::cout << "������ �ணࠬ�� ᮡ�ࠥ� ⮯-3 ���� ���� �.\n"; for (int i = 0; i < 3; i++) { int rating; std::string name; std::cout << "��������, ������ ३⨭�, �������� �� �१ ���: "; std::cin >> rating; std::getline(std::cin, name); // ���ࠥ� ��譨� ���� �� �������� if (!name.empty() && name[0] == ' ') { name = name.substr(1); } favorites.push_back(std::make_pair(rating, name)); } // �����㥬 �� ३⨭�� (�� ����襣� � ����襬�) std::sort(favorites.begin(), favorites.end()); std::cout << "\n���-3 ���� ���� �:\n"; for (const auto& item : favorites) { std::cout << item.first << ". " << item.second << '\n'; } std::cout << '\n'; } int task_2() { int choice; do { std::cout << "=========================================\n"; std::cout << " ����� ������\n"; std::cout << "=========================================\n"; std::cout << "1 - ����� A: ������ ���� ������⮢ �����\n"; std::cout << "2 - ����� B: ���������� �।���� ��䬥���� � ᯨ᮪\n"; std::cout << "3 - ����� C: ���-3 ���� ��饩\n"; std::cout << "0 - ��室\n"; std::cout << "=========================================\n"; std::cout << "��� �롮�: "; std::cin >> choice; std::cin.ignore(); // ��頥� ���� �� ����� � switch (choice) { case 1: std::cout << '\n'; taskA(); break; case 2: std::cout << '\n'; taskB(); break; case 3: std::cout << '\n'; taskC(); break; case 0: std::cout << "��室 �� �ணࠬ��.\n"; break; default: std::cout << "������ �롮�! ����� ᭮��.\n"; break; } if (choice != 0) { std::cout << "������ Enter ��� �த�������..."; std::cin.get(); } } while (choice != 0); return 0; }