diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cdfa015 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.idea + +cmake-buid-debug + +# Executables +*.exe \ No newline at end of file diff --git a/main.c b/main.c new file mode 100644 index 0000000..8052885 --- /dev/null +++ b/main.c @@ -0,0 +1,67 @@ +#include +#include + +double calculate(char op, double num1, double num2) { + double result = 0; + switch (op) { + case '+': + result = num1 + num2; + break; + case '-': + result = num1 - num2; + break; + case '*': + result = num1 * num2; + break; + case '/': + result = num1 / num2; + break; + } + return result; +} + +int main() { + double number = 0; + double tmpNumber = 0; + char input; + char operator; + + while (1) { + scanf(" %c", &input); + switch (input) { + case '+': + operator = '+'; + tmpNumber = number; + number = 0; + break; + case '-': + operator = '-'; + tmpNumber = number; + number = 0; + break; + case '*': + operator = '*'; + tmpNumber = number; + number = 0; + break; + case '/': + operator = '/'; + tmpNumber = number; + number = 0; + break; + case '=': + printf("%lf\n", calculate(operator, tmpNumber, number)); + tmpNumber = 0; + number = 0; + break; + case 'q': + goto exit; + // operator doesn't match any case constant + default: + number = (number * 10) + atof(&input); + printf("%.1lf\n", number); + } + } + exit: + return 0; +}