From e2d1e726f026899f5f6a4d0c0ca3d41ce335c6da Mon Sep 17 00:00:00 2001 From: Hannes Kuchelmeister Date: Sun, 10 Jan 2021 15:06:52 +0100 Subject: [PATCH] add generation algorithm to generate operations --- Assignment_3/main.cpp | 72 +++++++++++++------------------------------ 1 file changed, 22 insertions(+), 50 deletions(-) diff --git a/Assignment_3/main.cpp b/Assignment_3/main.cpp index 69e4734..9a3aa80 100644 --- a/Assignment_3/main.cpp +++ b/Assignment_3/main.cpp @@ -18,58 +18,30 @@ using namespace std::chrono; #define OP_COUNT 100000 #define THREADS 4 -enum methodname {push, pop, size, noop}; -typedef struct _operation{ - methodname method; - int input; -} operation; +std::vector generate_operations_uniform(){ + operation default_operation = create_operation(methodname::push, 0); + std::vector operations(OP_COUNT, default_operation); -void do_operation(operation* op, Stack* set) { - switch (op->method) { - case methodname::push: - break; - case methodname::pop: - break; - case methodname::size: - break; - default: - break; + int stack_size = 0; + for (auto op = operations.begin(); op != operations.end(); op++) { + switch (rand() % 3) { + case 0: + if (stack_size > 0) { + op->method = methodname::pop; + stack_size--; + break; + } + case 1: + op->method = methodname::push; + op->value = rand() % 20; + stack_size++; + break; + default: + op->method = methodname::size; + break; + } } -}; - -//void generate_operations_uniform(std::vector *operations, int minVal, int maxVal) { -// int range_size = maxVal - minVal; -// for (auto op = operations->begin(); op != operations->end(); op++) { -// op->input = (rand() % range_size) + minVal; -// switch (rand() % 3) { -// case 0: -// op->method = methodname::add; -// break; -// case 1: -// op->method = methodname::rmv; -// break; -// default: -// op->method = methodname::ctn; -// break; -// } -// } -//} - -//void generate_operations(std::vector *operations, int minVal, int maxVal, int i) { -// int range_size = maxVal - minVal; -// for (auto op = operations->begin(); op != operations->end(); op++) { -// op->input = (rand() % range_size) + minVal; - -// if (rand() % 100 < i) { -// op->method = methodname::ctn; -// } else if (rand() % 10 < 9) { -// op->method = methodname::add; -// } else { -// op->method = methodname::rmv; -// } -// } -// DEBUG_MSG("Generated operations with i = "<< i); -//} +} //void run_worker(std::vector* operations, Set* set) { // DEBUG_MSG("Run worker");