From 18e58594be43bfd8aba2332a390b1f5b5ffc47be Mon Sep 17 00:00:00 2001 From: Gosha <793egorkot@gmail.com> Date: Mon, 30 Sep 2024 16:05:21 +0300 Subject: [PATCH 1/5] Create Laba 1 Spiridonov Gosha --- Laba 1 Spiridonov Gosha | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Laba 1 Spiridonov Gosha diff --git a/Laba 1 Spiridonov Gosha b/Laba 1 Spiridonov Gosha new file mode 100644 index 00000000..dfeed55a --- /dev/null +++ b/Laba 1 Spiridonov Gosha @@ -0,0 +1,37 @@ +#include +#include + +bool pch(int n) { + if (n <= 1) { + return false; + } + for (int i = 2; i <= sqrt(n); i++) { + if (n % i == 0) { + return false; + } + } + return true; +} //функция проверки на простое число + +int main() { + int num=0, sum=0, nel; //num количество подмассивов, sum сумма элементов подмассива, nel количество элементов массива + int** arr = new int*[num]; //создание двумерного массива + std::cout << "Введите количество подмассивов: "; + std::cin >> num; + int cpp = 0; // сколько подмассивов с суммой элементов - проствм числои + for (int i = 0; i < num; ++i) { + std::cout << "Введите количество элементов в подмассиве " << i + 1 << ": "; + std::cin >> nel; + arr[i] = new int[nel]; + std::cout << "Введите элементы подмассива " << i + 1 << ": "; + for (int j = 0; j < nel; ++j) { + std::cin >> arr[i][j]; + sum += arr[i][j]; + } + + if (pch(sum)) { + cpp+=1; //прибавляет один, если сумма простите число + } + } + std::cout << "Количество подмассивов с суммой элементов, являющейся простым числом: " << cpp << std::endl; +} From 8a26b8aff8dd6c118b7ecf3bb9387baf62a5e237 Mon Sep 17 00:00:00 2001 From: Gosha <793egorkot@gmail.com> Date: Sun, 13 Oct 2024 21:42:59 +0300 Subject: [PATCH 2/5] Create Laba 2 Spiridonov Gosha --- Laba 2 Spiridonov Gosha | 66 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Laba 2 Spiridonov Gosha diff --git a/Laba 2 Spiridonov Gosha b/Laba 2 Spiridonov Gosha new file mode 100644 index 00000000..876b135e --- /dev/null +++ b/Laba 2 Spiridonov Gosha @@ -0,0 +1,66 @@ +#include +#include +#include +#include +#include +#include // для подсчёта памчти + +// считает повторения значений в массиве +std::vector numcases(const std::vector& arr) { + std::unordered_map nummap; + + // считает сколько раз каждый элемент + for (const auto& item : arr) { + nummap[item]++; + } + + // выводит в массив-результат количество повторений ^_^ <3 + std::vector result; + for (const auto& item : arr) { + result.push_back(nummap[item]); + } + + return result; +} + +// сколько ушло памяти (в кб) +void memory () { + struct rusage usage; + getrusage(RUSAGE_SELF, &usage); + std::cout << "Памяти ушло: " << usage.ru_maxrss << " килобайт" << std::endl; +} + +void runtests() { + { + std::vector arr = {"Orange", "Red", "Green", "Orange"}; + std::vector expected = {2, 1, 1, 2}; + std::vector result = numcases(arr); + assert(result == expected); + std::cout << "Тест пройден" << std::endl; + memory(); + } + + { + std::vector arr = {"Lomo", "Pesochka", "Kronva", "Birzha"}; + std::vector expected = {1, 1, 1, 1}; + std::vector result = numcases(arr); + assert(result == expected); + std::cout << "Тест пройден" << std::endl; + memory(); + } + + { + std::vector arr = {"Vladislav", "Vladislav", "Vladislav", "Vladislav"}; + std::vector expected = {4, 4, 4, 4}; + std::vector result = numcases(arr); + assert(result == expected); + std::cout << "Тест пройден" << std::endl; + memory(); + } +} + +int main() { + // запуск тестиков + runtests(); + return 0; +} From c68b14cf15a5dd9ecd91c6151aded159102273c2 Mon Sep 17 00:00:00 2001 From: Gosha <793egorkot@gmail.com> Date: Sun, 13 Oct 2024 21:47:06 +0300 Subject: [PATCH 3/5] Update Laba 2 Spiridonov Gosha --- Laba 2 Spiridonov Gosha | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Laba 2 Spiridonov Gosha b/Laba 2 Spiridonov Gosha index 876b135e..35451381 100644 --- a/Laba 2 Spiridonov Gosha +++ b/Laba 2 Spiridonov Gosha @@ -23,11 +23,11 @@ std::vector numcases(const std::vector& arr) { return result; } -// сколько ушло памяти (в кб) +// сколько ушло памяти (в б) void memory () { struct rusage usage; getrusage(RUSAGE_SELF, &usage); - std::cout << "Памяти ушло: " << usage.ru_maxrss << " килобайт" << std::endl; + std::cout << "Памяти ушло: " << usage.ru_maxrss << " байт" << std::endl; } void runtests() { From 79882bff72b230b1bec70d263afac36cf5cf77cd Mon Sep 17 00:00:00 2001 From: gurbacha24 <793egorkot@gmail.com> Date: Sun, 16 Mar 2025 23:36:54 +0300 Subject: [PATCH 4/5] adding sorting algorithms for the sake --- Bogosort.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ Bozosort.cpp | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 Bogosort.cpp create mode 100644 Bozosort.cpp diff --git a/Bogosort.cpp b/Bogosort.cpp new file mode 100644 index 00000000..f13c9a65 --- /dev/null +++ b/Bogosort.cpp @@ -0,0 +1,55 @@ +#include +#include +#include +#include +#include + +/* +Алгоритм сортировки Bogosort/Monkeysort (Болотная/Обезьянья сортировка) +Сортирует путём повторяющихся перемешиек, пока перемешка не даст отсортированный массив. +Сложность: +в лучшем случае -- O(n); +в среднем случае -- O(n * n!); +в худшем случае сортировка может вообще не закончиться. +Память: O(1). +*/ + +// Функция для выполнения Bogosort +void bogosort(std::vector& arr) { + std::random_device rd; + std::mt19937 g(rd()); + + // Проверка на отсортированность + while (!std::is_sorted(arr.begin(), arr.end())) { + std::shuffle(arr.begin(), arr.end(), g); // Случайная перемешка массива + } +} + +int main() { + std::vector arr = {5, 2, 9, 10, 11, 12, 1, 5, 111, 100}; + + std::cout << "Original array: "; + for (int num : arr) { + std::cout << num << " "; + } + std::cout << std::endl; + + // Замеряем время + std::clock_t start = std::clock(); // Начало замера + + // Выполняем Bogosort + bogosort(arr); + + std::clock_t end = std::clock(); // Конец замера + double time = double(end - start) / CLOCKS_PER_SEC; // Вычисляем время в секундах + + std::cout << "Sorted array: "; + for (int num : arr) { + std::cout << num << " "; + } + std::cout << std::endl; + + std::cout << "Time taken: " << time << " seconds" << std::endl; + + return 0; +} \ No newline at end of file diff --git a/Bozosort.cpp b/Bozosort.cpp new file mode 100644 index 00000000..8651f6ab --- /dev/null +++ b/Bozosort.cpp @@ -0,0 +1,56 @@ +#include +#include +#include +#include +#include + +/* +Алгоритм сортировки Bozosort (Сортировка клоуна Бозо) +Сложность: +в лучшем случае -- O(n); +в среднем случае -- O(n * n!). +в худшем случае сортировка может вообще не закончиться. +Память -- O(n * n!). +*/ + +// Функция для выполнения Bozosort +void bozosort(std::vector& arr) { + std::random_device rd; + std::mt19937 g(rd()); + std::uniform_int_distribution dist(0, arr.size() - 1); + + while (!std::is_sorted(arr.begin(), arr.end())) { + // Меняем местами два случайных элемента + size_t i = dist(g), j = dist(g); + std::swap(arr[i], arr[j]); + } +} + +int main() { + std::vector arr = {5, 2, 9, 10, 11, 12, 1, 5, 111, 100}; + + std::cout << "Original array: "; + for (int num : arr) { + std::cout << num << " "; + } + std::cout << std::endl; + + // Замеряем время + std::clock_t start = std::clock(); // Начало замера + + // Выполняем Bogosort + bozosort(arr); + + std::clock_t end = std::clock(); // Конец замера + double time = double(end - start) / CLOCKS_PER_SEC; // Вычисляем время в секундах + + std::cout << "Sorted array: "; + for (int num : arr) { + std::cout << num << " "; + } + std::cout << std::endl; + + std::cout << "Time taken: " << time << " seconds" << std::endl; + + return 0; +} \ No newline at end of file From d065bb349466b0e7e02e5be98149929592a9d0a1 Mon Sep 17 00:00:00 2001 From: gurbacha24 <793egorkot@gmail.com> Date: Sun, 16 Mar 2025 23:38:09 +0300 Subject: [PATCH 5/5] adding sorting algorithms --- Bogosort.cpp | 2 +- Bozosort.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Bogosort.cpp b/Bogosort.cpp index f13c9a65..b4994c55 100644 --- a/Bogosort.cpp +++ b/Bogosort.cpp @@ -52,4 +52,4 @@ int main() { std::cout << "Time taken: " << time << " seconds" << std::endl; return 0; -} \ No newline at end of file +} diff --git a/Bozosort.cpp b/Bozosort.cpp index 8651f6ab..65e5c516 100644 --- a/Bozosort.cpp +++ b/Bozosort.cpp @@ -53,4 +53,4 @@ int main() { std::cout << "Time taken: " << time << " seconds" << std::endl; return 0; -} \ No newline at end of file +}