Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include <string>
- #include <cstring>
- #include <thread>
- #include <mutex>
- #include <list>
- #include <cstdint>
- #define MAX_OBJECTS (1000)
- #define HALF_OBJECTS (500)
- std::mutex mtx;
- int src_objects[MAX_OBJECTS];
- void UseKurtAlgo(int swap_count, int *objects)
- {
- int i, j, t_objects[MAX_OBJECTS];
- for (i = 0; i < (MAX_OBJECTS - swap_count); i++)
- {
- t_objects[2 * i] = objects[swap_count + i];
- t_objects[(2 * i) + 1] = objects[i];
- }
- for (j = (i = MAX_OBJECTS - swap_count); j < swap_count; j++) t_objects[j + i] = objects[j];
- memcpy(objects, t_objects, sizeof(int)*MAX_OBJECTS);
- }
- void threaded_func(int start_objects, int to_objects, FILE *file_handle)
- {
- int i, objects[MAX_OBJECTS];
- uint64_t iteration_count;
- memcpy(objects, src_objects, sizeof(int)*MAX_OBJECTS);
- for (i = start_objects; i < to_objects; i++)
- {
- iteration_count = 0;
- do
- {
- UseKurtAlgo(i, objects);
- ++iteration_count;
- //if ((++iteration_count) >= MAX_ITERATIONS) break;
- } while (memcmp(objects, src_objects, sizeof(int)*MAX_OBJECTS));
- mtx.lock();
- std::wcout << L"Objects: " << MAX_OBJECTS << L"; Swap amount: " << i << L"; Iterations needed: " << iteration_count << std::endl;
- fputws(L"Objects: ", file_handle);
- fputws(std::to_wstring(MAX_OBJECTS).c_str(), file_handle);
- fputws(L"; Swap amount: ", file_handle);
- fputws(std::to_wstring(i).c_str(), file_handle);
- fputws(L"; Iterations needed: ", file_handle);
- fputws(std::to_wstring(iteration_count).c_str(), file_handle);
- fputws(L"\r\n", file_handle);
- mtx.unlock();
- }
- }
- int main(int args, char *argv[])
- {
- FILE *file_handle = fopen("kurtalgo.txt", "w+,ccs=UTF-8");
- if (file_handle)
- {
- for (int i = 0; i < MAX_OBJECTS; i++) src_objects[i] = i;
- std::thread t1(threaded_func, HALF_OBJECTS + 50, HALF_OBJECTS + 100, file_handle),
- t2(threaded_func, HALF_OBJECTS + 100, HALF_OBJECTS + 150, file_handle),
- t3(threaded_func, HALF_OBJECTS + 150, HALF_OBJECTS + 200, file_handle),
- t4(threaded_func, HALF_OBJECTS + 200, HALF_OBJECTS + 250, file_handle),
- t5(threaded_func, HALF_OBJECTS + 250, HALF_OBJECTS + 300, file_handle),
- t6(threaded_func, HALF_OBJECTS + 300, HALF_OBJECTS + 350, file_handle),
- t7(threaded_func, HALF_OBJECTS + 350, HALF_OBJECTS + 400, file_handle),
- t8(threaded_func, HALF_OBJECTS + 400, HALF_OBJECTS + 450, file_handle),
- t9(threaded_func, HALF_OBJECTS + 450, HALF_OBJECTS + 500, file_handle);
- threaded_func(HALF_OBJECTS, HALF_OBJECTS + 50, file_handle);
- t1.join();
- t2.join();
- t3.join();
- t4.join();
- t5.join();
- t6.join();
- t7.join();
- t8.join();
- t9.join();
- fclose(file_handle);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement