From 42548075029fd9ffa83341196481518a81d073af Mon Sep 17 00:00:00 2001 From: Bohdana Marchenko Date: Wed, 12 Mar 2025 17:43:59 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20du3/program.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- du3/program.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/du3/program.c b/du3/program.c index 9e74e26..52df7cf 100644 --- a/du3/program.c +++ b/du3/program.c @@ -15,11 +15,6 @@ * * Parametre: * - line: Reťazec, z ktorého sa má odstrániť koncový znak nového riadku. - * - * Príklad použitia: - * char buffer[256]; - * fgets(buffer, sizeof(buffer), stdin); - * trim_newline(buffer); // Odstráni '\n' z konca reťazca, ak existuje. */ void trim_newline(char *line) { size_t len = strlen(line); @@ -157,7 +152,7 @@ float calculate(float num1, char op, float num2, int *error) { case '/': // Pred delením overíme, či nedochádza k deleniu nulou if (fabs(num2) < EPSILON) { - *error = 1; + *error = 1; // Chyba: delenie nulou return 0; } res = num1 / num2; @@ -180,10 +175,10 @@ float calculate(float num1, char op, float num2, int *error) { * 2. Predpokladá sa, že riadok nie je prázdny (kontrola prázdnoty sa vykoná v main). * 3. Pokúsi sa rozparsovať riadok na jednotlivé časti: prvé číslo, operátor, druhé číslo a výsledok. * 4. Ak parsovanie zlyhá, nastaví output na "CHYBA". - * 5. Ak ide o delenie nulou, tiež nastaví output na "CHYBA". - * 6. Vykoná operáciu a porovná vypočítaný výsledok so zadaným výsledkom s toleranciou EPSILON. + * 5. Vykoná operáciu a porovná vypočítaný výsledok so zadaným výsledkom s toleranciou EPSILON. * - Ak sa výsledok zhoduje, nastaví output na "OK". * - Ak sa výsledok nezhoduje, nastaví output na "ZLE". + * 6. V prípade delenia nulou, keď calculate vráti chybu, program nastaví output na "ZLE". * * Parametre: * - line: Vstupný riadok (napr. "10.0 / 2.0 = 5.0"). @@ -209,16 +204,11 @@ void process_line(const char *line, char *output, size_t output_size) { return; } - // Overenie delenia nulou: ak ide o delenie a menovateľ je nulový, nastane chyba - if (op == '/' && fabs(num2) < EPSILON) { - snprintf(output, output_size, "CHYBA"); - return; - } - int calcError = 0; float calculatedResult = calculate(num1, op, num2, &calcError); if (calcError) { - snprintf(output, output_size, "CHYBA"); + // V prípade delenia nulou (alebo inej chyby v calcultion) vypíšeme "ZLE" + snprintf(output, output_size, "ZLE"); return; } @@ -270,4 +260,4 @@ int main(int argc, char *argv[]) { } return 0; -} \ No newline at end of file +}