From 9b3c8e06f70fa08d30d34ab43144c51de143c93f Mon Sep 17 00:00:00 2001 From: daleclack Date: Wed, 8 Jun 2022 14:14:36 +0800 Subject: [PATCH] Add Calculate code for integers --- cpp/.vscode/settings.json | 5 +++ cpp/bin/calc | Bin 0 -> 21424 bytes cpp/calc.cpp | 64 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 cpp/.vscode/settings.json create mode 100644 cpp/bin/calc create mode 100644 cpp/calc.cpp diff --git a/cpp/.vscode/settings.json b/cpp/.vscode/settings.json new file mode 100644 index 0000000..0cba2e6 --- /dev/null +++ b/cpp/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "iostream": "cpp" + } +} \ No newline at end of file diff --git a/cpp/bin/calc b/cpp/bin/calc new file mode 100644 index 0000000000000000000000000000000000000000..845fec993f4a8a3bcac4284311eda3c82238322e GIT binary patch literal 21424 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 +#include +#include + +static int pos = 0; +int calc_expression_value(const char * expression); + +int calc_factor_value(const char * factor){ + int result = 0; + char c = factor[pos]; + if( c == '('){ // if expression has '(', calculate the expression in the '()' + pos++; + result = calc_expression_value(factor); + pos++; + }else{ + while(isdigit(c)){ // Get the number to calculate + result = 10 * result + c - '0'; + pos++; + c = factor[pos]; + } + } + return result; +} + +int calc_term_value(const char * term){ + int result = calc_factor_value(term); // Get the first number + while(true){ + //pos++; // Calc the multiplication and divide + char op = term[pos]; + if(op == '*' || op == '/'){ + pos++; + int value = calc_factor_value(term); // Get another value + if(op == '*') result *= value; + else result /= value; + }else{ + break; + } + } + return result; +} + +int calc_expression_value(const char * expression){ + int result = calc_term_value(expression); // Calc the result of expression + //bool more = true; + while(true){ + char op = expression[pos]; + if(op == '+' || op == '-'){ // Calculate for add and subb + pos++; + int value = calc_term_value(expression); + if( op == '+') result += value; + else result -= value; + }else{ + break; + } + } + return result; +} + +int main(int argc,char ** argv){ + char expression[1000]; + std::cin.getline(expression,sizeof(expression)); + std::cout<