DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

функційне програмування.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2025
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритми та моделі обчислень

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра ЕОМ / Звіт З лабораторної роботи №5 з дисципліни: «Алгоритми та моделі обчислень» на тему: «функційне програмування.» Львів 2022 Мета роботи: ознайомитися з парадигмою функційного програмування. Завдання Детально ознайомитися з наведеним прикладом програми та здійснити за її допомогою сортування вхідних даних згідно варіанту. / Код програми #include <iostream> #include <iterator> #include <list> #include <future> #include <stack> #include <thread> #include <vector> #include <algorithm> #define DATA_TYPE unsigned long long int #define INPUT_DATA {585, 586, 581, 581, 577, 580, 581, 576, 576, 572, 579, 571, 576, 577, 572, 574, 566, 571, 572, 567} template<typename F, typename A> std::future<typename std::result_of<F(A&&)>::type> spawn_task(F&& f, A&& a) { typedef std::result_of<F(A&&)> result_type; std::packaged_task<result_type(A&&)> task(std::move(f)); std::future<result_type> res(task.get_future()); std::thread t(std::move(task), std::move(a)); t.detach(); return res; } template < typename T > std::list < T > sequential_quick_sort(std::list<T> input) { if (input.empty()) { return input; } std::list<T> result; result.splice(result.begin(), input, input.begin()); // (1) T const& pivot = *result.begin(); // (2) auto divide_point = std::partition(input.begin(), input.end(), [&](T const& t) {return t < pivot; }); //(3) std::list<T> lower_part; lower_part.splice(lower_part.end(), input, input.begin(), divide_point); // (4) auto new_lower(sequential_quick_sort(std::move(lower_part))); // (5) auto new_higher(sequential_quick_sort(std::move(input))); // (6) result.splice(result.end(), new_higher); // (7) result.splice(result.begin(), new_lower); // (8) return result; } template < typename T > std::list < T > parallel_quick_sort(std::list<T> input) { if (input.empty()) { return input; } std::list<T> result; result.splice(result.begin(), input, input.begin()); T const& pivot = *result.begin(); auto divide_point = std::partition(input.begin(), input.end(), [&](T const& t) {return t < pivot; }); std::list<T> lower_part; lower_part.splice(lower_part.end(), input, input.begin(), divide_point); std::future<std::list<T> > new_lower(std::async(&parallel_quick_sort<T>, std::move(lower_part))); // (1) auto new_higher(parallel_quick_sort(std::move(input))); // (2) result.splice(result.end(), new_higher); // (3) result.splice(result.begin(), new_lower.get()); // (4) return result; } int main() { std::list<DATA_TYPE> input(INPUT_DATA); std::list<DATA_TYPE> output = sequential_quick_sort(input); std::cout << "input:" << std::endl; std::copy(input.begin(), input.end(), std::ostream_iterator<DATA_TYPE>(std::cout, ", ")); std::cout << std::endl << std::endl; std::cout << "output:" << std::endl; std::copy(output.begin(), output.end(), std::ostream_iterator<DATA_TYPE>(std::cout, ", ")); std::cout << std::endl << std::endl; std::cout << "Press Enter to continue . . ."; std::cin.get(); return 0; } Результат виконання / Висновок: виконавши дану лабораторну роботу, я ознайомився з парадигмою функційного програмування. Виконала швидке сортування для заданного масиву.
Антиботан аватар за замовчуванням

13.06.2025 08:47

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!