#include #include "basecalc.h" #include #include "input_resolver.h" int main() { auto calc = std::make_unique(); std::cout << "Initializing calculator"; while (true) { std::cout << "What's your next input? (+,-,*,/,%,$,q,p)"; auto command = resolveCommand(); if (command.shouldTerminate()) { break; } switch(command.getNextChar()) { case '+': { calc->calculate({OpType::Addition, static_cast(*calc), command.getNextArg()}); } break; case '-': { calc->calculate({OpType::Subtraction, static_cast(*calc), command.getNextArg()}); } break; case '*': { calc->calculate({OpType::Multiplication, static_cast(*calc), command.getNextArg()}); } break; case '/': { calc->calculate({OpType::Division, static_cast(*calc), command.getNextArg()}); } break; case '%': { calc->calculate({OpType::Modulo, static_cast(*calc), command.getNextArg()}); } break; case '$': { calc->calculate({OpType::Special, static_cast(*calc)}); } break; } if(command.shouldPrint()) std::cout << "Intermediary result: " << static_cast(*calc) << std::endl; } std::cout << "Final output: " << static_cast(*calc) << std::endl; return 0; }