From 0a71ff2d13c151838a93fbc3e654d66d7dcd5f05 Mon Sep 17 00:00:00 2001 From: Weber Date: Mon, 14 Oct 2024 14:01:49 +0000 Subject: [PATCH] test --- cv3/program.c | 62 +++++++++++++++++---------------------------------- 1 file changed, 21 insertions(+), 41 deletions(-) diff --git a/cv3/program.c b/cv3/program.c index 30baefa..ab2f54e 100644 --- a/cv3/program.c +++ b/cv3/program.c @@ -78,18 +78,18 @@ bool je_platna_operacia(char operacia) { return operacia == '+' || operacia == '-' || operacia == '*' || operacia == '/'; } -// Funkcia na validáciu, či je vstup platným číslom + bool je_platne_cislo(const char *vstup) { char *koniec; - strtof(vstup, &koniec); // Prevedie reťazec na číslo + strtof(vstup, &koniec); + - // Ak ukazovateľ koniec nesmeruje na '\0', vstup obsahuje neplatné znaky return *koniec == '\n' || *koniec == '\0'; } -// Funkcia na kontrolu, či je v zásobníku dostatok operantov pre operáciu + bool dost_operantov(KalkulackaZasobnik *kalkulacka) { - return kalkulacka->vrchol >= 1; // Potrebujeme aspoň 2 operanty na operáciu + return kalkulacka->vrchol >= 1; } int main() { @@ -105,59 +105,39 @@ int main() { } if (je_platne_cislo(vstup)) { - float hodnota = strtof(vstup, NULL); + float hodnota = strtof(vstup, NULL); vloz(&kalkulacka, hodnota); zobraz_zasobnik(&kalkulacka); } - else if (strlen(vstup) == 2 && je_platna_operacia(vstup[0])) { + else if (strlen(vstup) == 2 && je_platna_operacia(vstup[0])) {a char operacia = vstup[0]; if (!dost_operantov(&kalkulacka)) { printf("not enough operands\n"); - continue; + continue; } + bool uspech = false; switch (operacia) { case '+': - if (scitat(&kalkulacka)) { - zobraz_zasobnik(&kalkulacka); - } else { - printf("no input\n"); - return 0; - } + uspech = scitat(&kalkulacka); break; case '-': - if (odcitat(&kalkulacka)) { - zobraz_zasobnik(&kalkulacka); - } else { - printf("no input\n"); - return 0; - } + uspech = odcitat(&kalkulacka); break; case '*': - if (nasobit(&kalkulacka)) { - zobraz_zasobnik(&kalkulacka); - } else { - printf("no input\n"); - return 0; - } + uspech = nasobit(&kalkulacka); break; - case '/': { - float a, b; - if (vyber(&kalkulacka, &a, &b)) { - if (a == 0) { - printf("division by zero\n"); - return 0; - } else { - vloz(&kalkulacka, b / a); - zobraz_zasobnik(&kalkulacka); - } - } else { - printf("no input\n"); - return 0; - } + case '/': + uspech = delit(&kalkulacka); break; - } + } + + if (uspech) { + zobraz_zasobnik(&kalkulacka); + } else { + printf("no input\n"); + return 0; } } else { printf("bad input\n");