From 68fe8dde349d13d4abc4ea29c1d46484f9827a7a Mon Sep 17 00:00:00 2001 From: mk570rp Date: Thu, 19 Mar 2026 15:46:58 +0000 Subject: [PATCH] du3 --- du3/program.c | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 du3/program.c diff --git a/du3/program.c b/du3/program.c new file mode 100644 index 0000000..849ad63 --- /dev/null +++ b/du3/program.c @@ -0,0 +1,102 @@ +#include +#include +#include +#include + +int main() { + char riadok[100]; + + while (fgets(riadok, sizeof(riadok), stdin)) { + + // prázdny riadok -> KONIEC + if (riadok[0] == '\n') { + break; + } + + char *r = riadok; + char *end; + + // preskoč medzery + while (*r == ' '){ + r++; + } + + // 1. číslo + float a = strtof(r, &end); + if (r == end) { + printf("CHYBA\n"); + continue; + } + r = end; + + while (*r == ' '){ + r++; + } + + // operátor + char or = *r; + if (!(or == '+' || or == '-' || or == '*' || or == '/')) { + printf("CHYBA\n"); + continue; + } + r++; + + while (*r == ' '){ + r++; + } + + // 2. číslo + float b = strtof(r, &end); + if (r == end) { + printf("CHYBA\n"); + continue; + } + r = end; + + while (*r == ' '){ + r++; + } + + // '=' + if (*r != '=') { + printf("CHYBA\n"); + continue; + } + r++; + + while (*r == ' '){ + r++; + } + + // výsledok + float c = strtof(r, &end); + if (r == end) { + printf("CHYBA\n"); + continue; + } + r = end; + + // výpočet + float cislo; + + if (or == '+') cislo = a + b; + else if (or == '-') cislo = a - b; + else if (or == '*') cislo = a * b; + else { + if (b == 0) { + printf("CHYBA\n"); + continue; + } + cislo = a / b; + } + + // porovnanie s toleranciou + if (fabs(cislo - c) <= 0.001) { + printf("OK\n"); + } else { + printf("ZLE\n"); + } + } + + return 0; +} \ No newline at end of file