diff --git a/cv3/program.c b/cv3/program.c index 6ab2e46..eca2646 100644 --- a/cv3/program.c +++ b/cv3/program.c @@ -72,10 +72,6 @@ void zobraz_zasobnik(KalkulackaZasobnik *kalkulacka) { printf("\n"); } -bool je_platna_operacia(char operacia) { - return operacia == '+' || operacia == '-' || operacia == '*' || operacia == '/'; -} - int main() { KalkulackaZasobnik kalkulacka; inicializuj(&kalkulacka); @@ -95,54 +91,56 @@ int main() { if (vloz(&kalkulacka, hodnota)) { zobraz_zasobnik(&kalkulacka); } - } else if (sscanf(vstup, "%c", &operacia) == 1) { - if (!je_platna_operacia(operacia)) { - printf("bad input\n"); - return 0; - } - switch (operacia) { - case '+': - if (scitat(&kalkulacka)) { - zobraz_zasobnik(&kalkulacka); - } else { - printf("no input\n"); - return 0; - } - break; - case '-': - if (odcitat(&kalkulacka)) { - zobraz_zasobnik(&kalkulacka); - } else { - printf("no input\n"); - return 0; - } - break; - case '*': - if (nasobit(&kalkulacka)) { - zobraz_zasobnik(&kalkulacka); - } else { - printf("no input\n"); - return 0; - } - 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); + if (sscanf(vstup + snprintf(NULL, 0, "%.2f", hodnota), " %c", &operacia) == 1) { + switch (operacia) { + case '+': + if (scitat(&kalkulacka)) { zobraz_zasobnik(&kalkulacka); + } else { printf("no input\n"); return 0; } + break; + case '-': + if (odcitat(&kalkulacka)) { + zobraz_zasobnik(&kalkulacka); + } else { + printf("no input\n"); + return 0; + } + break; + case '*': + if (nasobit(&kalkulacka)) { + zobraz_zasobnik(&kalkulacka); + } else { + printf("no input\n"); + return 0; + } + 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; + } + break; } - break; + default: + zobraz_zasobnik(&kalkulacka); + printf("bad input\n"); + return 0; } } } else { - printf("no input\n"); + printf("bad input\n"); return 0; } }