From b2e4931c1576d86740f5aa2e4eab6fb619fe9cef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=9F=D0=BE=D0=BB=D0=B8=D0=BD=D0=B0=20=D0=A5=D1=80=D0=BE?=
 =?UTF-8?q?=D0=BC=D0=BE=D0=B2=D0=B0?= <stud126184@vyatsu.ru>
Date: Sat, 13 May 2023 12:27:49 +0000
Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BB(=D0=B0)=20?=
 =?UTF-8?q?'c=5Fprogramm'?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 c_programm | 204 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 204 insertions(+)
 create mode 100644 c_programm

diff --git a/c_programm b/c_programm
new file mode 100644
index 0000000..0f60470
--- /dev/null
+++ b/c_programm
@@ -0,0 +1,204 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+enum calculator_state
+{
+    NUMBER_FIRST,
+    NUMBER_SECOND,
+    RESULT
+};
+
+enum calculator_op
+{
+    NO_OP,
+    ADD,
+    SUB,
+    DIV,
+    MUL
+};
+struct calculator
+{
+    // 1 число
+    int num1;
+    // 2 число
+    int num2;
+    // 3 операция
+    enum calculator_op operation;
+    // 4 результат
+    double result;
+    // 5 состояние атомата
+    enum calculator_state state;
+};
+
+// 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()
+{
+    struct calculator calc;
+    calc.state = NUMBER_FIRST;
+    calc.operation = NO_OP;
+    calc.num1 = 0;
+    calc.num2 = 0;
+    calc.result = 0;
+
+    char input;
+    while (1)
+    {
+        scanf("%d", &input);
+        switch (calc.state)
+        {
+        case NUMBER_FIRST:
+            switch (input)
+            {
+            case 0:
+                calc.num1 = (calc.num1 * 10) + 7;
+                printf("%d",calc.num1);
+                break;
+            case 1:
+                calc.num1 = (calc.num1 * 10) + 8;
+                break;
+            case 2:
+                calc.num1 = (calc.num1 * 10) + 9;
+                break;
+            case 3:
+                calc.operation = DIV;
+                calc.state = NUMBER_SECOND;
+                break;
+            case 4:
+                calc.num1 = (calc.num1 * 10) + 4;
+                break;
+            case 5:
+                calc.num1 = (calc.num1 * 10) + 5;
+                break;
+            case 6:
+                calc.num1 = (calc.num1 * 10) + 6;
+                break;
+            case 7:
+                calc.operation = MUL;
+                calc.state = NUMBER_SECOND;
+                break;
+            case 8:
+                calc.num1 = (calc.num1 * 10) + 1;
+                break;
+            case 9:
+                calc.num1 = (calc.num1 * 10) + 2;
+            case 10:
+                calc.num1 = (calc.num1 * 10) + 3;
+                break;
+            case 11:
+                calc.operation = SUB;
+                calc.state = NUMBER_SECOND;
+                break;
+            case 12:
+                calc.num1 = 0;
+                break;
+            case 13:
+                calc.state = NUMBER_FIRST;
+                calc.operation = NO_OP;
+                calc.num1 = 0;
+                calc.num2 = 0;
+                calc.result = 0;
+                break;
+            case 14:
+                break;
+            case 15:
+                calc.operation = ADD;
+                calc.state = NUMBER_SECOND;
+                break;
+            
+            }
+
+        case NUMBER_SECOND:
+            switch (input)
+            {
+            case 0:
+                calc.num2 = (calc.num2 * 10) + 7;
+                break;
+            case 1:
+                calc.num2 = (calc.num2 * 10) + 8;
+                break;
+            case 2:
+                calc.num2 = (calc.num2 * 10) + 9;
+                break;
+            case 3:
+
+                break;
+            case 4:
+                calc.num2 = (calc.num2 * 10) + 4;
+                break;
+            case 5:
+                calc.num2 = (calc.num2 * 10) + 5;
+                break;
+            case 6:
+                calc.num2 = (calc.num2 * 10) + 6;
+                break;
+            case 7:
+
+                break;
+            case 8:
+                calc.num2 = (calc.num2 * 10) + 1;
+                break;
+            case 9:
+                calc.num2 = (calc.num2 * 10) + 2;
+            case 10:
+                calc.num2 = (calc.num2 * 10) + 3;
+                break;
+            case 11:
+
+                break;
+            case 12:
+                calc.num2 = 0;
+                break;
+            case 13:
+                calc.state = NUMBER_FIRST;
+                calc.operation = NO_OP;
+                calc.num1 = 0;
+                calc.num2 = 0;
+                calc.result = 0;
+                break;
+            case 14:
+                calc.state = RESULT;
+                break;
+            case 15:
+
+                break;
+            }
+
+        case RESULT:
+            switch (calc.operation)
+            {
+            case ADD:
+                calc.result = calc.num1 + calc.num2;
+                break;
+            case SUB:
+                calc.result = calc.num1 - calc.num2;
+                break;
+            case MUL:
+                calc.result = calc.num1 * calc.num2;
+                break;
+            case DIV:
+                calc.result = calc.num1 / calc.num2;
+                break;
+                return calc.result;
+            }
+        }
+    }
+    return 0;
+}
\ No newline at end of file