From 7c9f6defedcb6c21c14931e227ea01933de560b8 Mon Sep 17 00:00:00 2001 From: st529yr Date: Wed, 20 Mar 2024 17:11:09 +0100 Subject: [PATCH] funguje --- a1/program.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 a1/program.c diff --git a/a1/program.c b/a1/program.c new file mode 100644 index 0000000..2d436c8 --- /dev/null +++ b/a1/program.c @@ -0,0 +1,66 @@ +#include +#include +#include +#include + +#define BUFFER_SIZE 100 + +// Funkcia na vyhodnotenie výrazu +char* evaluate_expression(char* expression) { + double num1, num2, expected_result, result; + char operator; + + // Načítanie čísel a operátora zo vstupného reťazca + if (sscanf(expression, "%lf %c %lf = %lf", &num1, &operator, &num2, &expected_result) != 4) { + return "CHYBA"; + } + + // Vykonanie operácie a porovnanie s očakávaným výsledkom + switch (operator) { + case '+': + result = num1 + num2; + break; + case '-': + result = num1 - num2; + break; + case '*': + result = num1 * num2; + break; + case '/': + // Kontrola delenia nulou + if (num2 == 0) { + return "CHYBA"; + } + result = num1 / num2; + break; + default: + return "CHYBA"; + } + + // Porovnanie výsledku so skutočným výsledkom s presnosťou na dve desatinné miesta + if (fabs(result - expected_result) < 0.01) { + return "OK"; + } else { + return "ZLE"; + } +} + +int main() { + char buffer[BUFFER_SIZE]; + + // Načítanie vstupných úloh a ich vyhodnotenie + while (fgets(buffer, BUFFER_SIZE, stdin)) { + // Odstránenie znaku nového riadku + buffer[strcspn(buffer, "\n")] = '\0'; + + // Ukončenie načítavania, ak je riadok prázdny + if (strlen(buffer) == 0) { + break; + } + + printf("%s\n", evaluate_expression(buffer)); + } + + return 0; +} +