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