From 39731c5060105b5c275484a9754ef415973f3604 Mon Sep 17 00:00:00 2001
From: giezz <giezz@vk.com>
Date: Sat, 18 Feb 2023 21:14:00 +0300
Subject: [PATCH] Console calculator implementation (initial commit)

---
 .gitignore |  6 +++++
 main.c     | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 73 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 main.c

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 <stdio.h>
+#include <stdlib.h>
+
+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;
+}