From 54fa4fcba298655860128f2d9ee5fa9354168ece Mon Sep 17 00:00:00 2001 From: Matej Hajduk Date: Tue, 11 Mar 2025 11:21:43 +0100 Subject: [PATCH] du3 --- du3/program.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 du3/program.c diff --git a/du3/program.c b/du3/program.c new file mode 100644 index 0000000..035a237 --- /dev/null +++ b/du3/program.c @@ -0,0 +1,52 @@ +#include +#include +#include +#include + +#define MAX 100 + + +int je_cislo(const char *u) { + char *koniec; + strtod(u, &koniec); + return *koniec == '\0'; +} + +int main() { + char riadok[MAX]; + double cislo1, cislo2, vysledok, skutocny_vysledok; + char operacia; + + while (fgets(riadok, MAX, stdin) != NULL) { + if (strlen(riadok) <= 1) break; //konec + + if (sscanf(riadok, " %lf %c %lf = %lf", &cislo1, &operacia, &cislo2, &vysledok) != 4) { + printf("CHYBA\n"); + continue; + } + + switch (operacia) { + case '+': skutocny_vysledok = cislo1 + cislo2; break; + case '-': skutocny_vysledok = cislo1 - cislo2; break; + case '*': skutocny_vysledok = cislo1 * cislo2; break; + case '/': + if (cislo2 == 0) { + printf("CHYBA\n"); + continue; + } + skutocny_vysledok = cislo1 / cislo2; + break; + default: + printf("CHYBA\n"); + continue; + } + + if (abs(skutocny_vysledok - vysledok) < 0.005) { + printf("OK\n"); + } else { + printf("ZLE\n"); + } + } + return 0; +} +