From ddb74790ad4dd37d5a45ce60e160023465aacc54 Mon Sep 17 00:00:00 2001 From: ak643du Date: Wed, 27 Mar 2024 14:34:46 +0100 Subject: [PATCH] Initialization --- a1/program.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 a1/program.c diff --git a/a1/program.c b/a1/program.c new file mode 100644 index 0000000..0b07f64 --- /dev/null +++ b/a1/program.c @@ -0,0 +1,65 @@ +#include +#include +#include +#include + +int main() { + char line[100]; + double num1, num2, result, expected_result; + char op; + + while (fgets(line, sizeof(line), stdin) != NULL) { + num1 = num2 = result = 0; + op = '\0'; + + // Remove any spaces between symbols + for (int i = 0; line[i] != '\0'; i++) { + if (isspace(line[i])) { + for (int j = i; line[j] != '\0'; j++) { + line[j] = line[j + 1]; + } + i--; // Move back one step to recheck the current character + } + } + + // Parse the line + sscanf(line, "%lf%c%lf=%lf", &num1, &op, &num2, &expected_result); + + // Check if the input is valid + if (op != '+' && op != '-' && op != '*' && op != '/') { + printf("CHYBA\n"); + continue; + } + + // Check for division by zero + if (op == '/' && num2 == 0) { + printf("CHYBA\n"); + continue; + } + + // Perform the calculation + switch (op) { + case '+': + result = num1 + num2; + break; + case '-': + result = num1 - num2; + break; + case '*': + result = num1 * num2; + break; + case '/': + result = num1 / num2; + break; + } + + // Check if the result is correct + if (result == expected_result) { + printf("OK\n"); + } else { + printf("ZLE\n"); + } + } + + return 0; +}