From 6e2027cae7d580dfba6f1a02485eeeb8d6cce20d Mon Sep 17 00:00:00 2001 From: Lev Date: Fri, 11 Jun 2021 17:50:32 -0500 Subject: [PATCH] Update implemented enterBid function --- .../Topic 4/4.4.13/MerkelMain.cpp | 58 +++++++++++++----- .../Topic 4/4.4.13/a.exe | Bin 293253 -> 293765 bytes 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/CM2005 Object Oriented Programming/Topic 4/4.4.13/MerkelMain.cpp b/CM2005 Object Oriented Programming/Topic 4/4.4.13/MerkelMain.cpp index 9610e68..39d8205 100644 --- a/CM2005 Object Oriented Programming/Topic 4/4.4.13/MerkelMain.cpp +++ b/CM2005 Object Oriented Programming/Topic 4/4.4.13/MerkelMain.cpp @@ -46,14 +46,26 @@ void MerkelMain::printHelp() void MerkelMain::printMarketStats() { + // for product Asks + // for (std::string const p : orderBook.getKnownProducts()) + // { + // std::cout << "Product: " << p << std::endl; + // std::vector entries = orderBook.getOrders(OrderBookType::ask, p, currentTime); + // std::cout << "Asks for product " << p << " are " << entries.size() << std::endl; + // std::cout << "Max ask for " << p << " is " << orderBook.getHighPrice(entries) << std::endl; + // std::cout << "Min ask for " << p << " is " << orderBook.getLowPrice(entries) << std::endl; + // } + + // for product Bids for (std::string const p : orderBook.getKnownProducts()) { std::cout << "Product: " << p << std::endl; - std::vector entries = orderBook.getOrders(OrderBookType::ask, p, currentTime); - std::cout << "Asks for product " << p << " are " << entries.size() << std::endl; - std::cout << "Max ask for " << p << " is " << orderBook.getHighPrice(entries) << std::endl; - std::cout << "Min ask for " << p << " is " << orderBook.getLowPrice(entries) << std::endl; + std::vector entries = orderBook.getOrders(OrderBookType::bid, p, currentTime); + std::cout << "Bids for product " << p << " are " << entries.size() << std::endl; + std::cout << "Max bid for " << p << " is " << orderBook.getHighPrice(entries) << std::endl; + std::cout << "Min bid for " << p << " is " << orderBook.getLowPrice(entries) << std::endl; } + // Overall stats // std::cout << "OrderBook contains : " << orders.size() << " entries" << std::endl; // unsigned int bids = 0; // unsigned int asks = 0; @@ -73,15 +85,14 @@ void MerkelMain::printMarketStats() void MerkelMain::enterAsk() { - std::cout << "Make an ask - enter the amount (product, price, amount. e.g. 'ETH/BTC, 200, 0.5'): " << std::endl; + std::cout << "Make an ask (product, price, amount. e.g. 'ETH/BTC, 125, 0.5'): " << std::endl; std::string input; - //std::cin.ignore(std::numeric_limits::max(), '\n'); std::getline(std::cin, input); std::vector tokens = CSVReader::tokenise(input, ','); - if(tokens.size() != 3) + if (tokens.size() != 3) { - std::cout << "Bad input!" << input << std::endl; + std::cout << "MerkelMain::enterAsk - Bad input!" << input << std::endl; } else { @@ -90,17 +101,37 @@ void MerkelMain::enterAsk() OrderBookEntry obe = CSVReader::stringsToOBE(tokens[1], tokens[2], currentTime, tokens[0], OrderBookType::ask); orderBook.insertOrder(obe); } - catch(const std::exception& e) + catch (const std::exception &e) { - std::cout << "MerkelMain::enterAsk Bad input!" << input << std::endl; + std::cout << "MerkelMain::enterAsk - Bad input!" << input << std::endl; } } - std::cout << "You typed: " << input << std::endl; + //std::cout << "You typed: " << input << std::endl; } void MerkelMain::enterBid() { - std::cout << "Make a bid - enter the amount" << std::endl; + std::cout << "Make a bid (product, price, amount. e.g. 'ETH/BTC, 150, 0.5'): " << std::endl; + std::string input; + std::getline(std::cin, input); + + std::vector tokens = CSVReader::tokenise(input, ','); + if (tokens.size() != 3) + { + std::cout << "MerkelMain::enterBid - Bad input!" << input << std::endl; + } + else + { + try + { + OrderBookEntry obe = CSVReader::stringsToOBE(tokens[1], tokens[2], currentTime, tokens[0], OrderBookType::bid); + orderBook.insertOrder(obe); + } + catch (const std::exception &e) + { + std::cout << "MerkelMain::enterAsk - Bad input!" << input << std::endl; + } + } } void MerkelMain::printWallet() @@ -121,12 +152,11 @@ int MerkelMain::getUserOption() std::string line; std::cout << "Type in 1-6" << std::endl; std::getline(std::cin, line); - //std::cin >> userOption; try { userOption = std::stoi(line); } - catch(const std::exception& e) + catch (const std::exception &e) { std::cout << "Invalid input!" << std::endl; } diff --git a/CM2005 Object Oriented Programming/Topic 4/4.4.13/a.exe b/CM2005 Object Oriented Programming/Topic 4/4.4.13/a.exe index 5bc0ea7f3877fb0bb500bc67b6f16e02e72062d9..7eb3f3bd90c32f16c02b98fef1181bc56581cb3c 100644 GIT binary patch delta 35359 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 by9_@%gG;l4-Z?L(&z3-8`_gBJj}-q8qba<~ delta 34607 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