diff --git a/cv3/program.c b/cv3/program.c index 94740a7..7892781 100644 --- a/cv3/program.c +++ b/cv3/program.c @@ -1,6 +1,7 @@ #include #include #include +#include #define MAX_VELKOST 10 @@ -72,6 +73,12 @@ void zobraz_zasobnik(KalkulackaZasobnik *kalkulacka) { printf("\n"); } +bool je_platny_vstup(const char *vstup) { + char *endptr; + strtof(vstup, &endptr); + return endptr != vstup && *endptr == '\n'; +} + int main() { KalkulackaZasobnik kalkulacka; inicializuj(&kalkulacka); @@ -87,7 +94,8 @@ int main() { float hodnota; char operacia; - if (sscanf(vstup, "%f", &hodnota) == 1) { + if (je_platny_vstup(vstup)) { + sscanf(vstup, "%f", &hodnota); if (vloz(&kalkulacka, hodnota)) { zobraz_zasobnik(&kalkulacka); } @@ -98,7 +106,6 @@ int main() { zobraz_zasobnik(&kalkulacka); } else { printf("no input\n"); - return 0; } break; case '-': @@ -106,7 +113,6 @@ int main() { zobraz_zasobnik(&kalkulacka); } else { printf("no input\n"); - return 0; } break; case '*': @@ -114,7 +120,6 @@ int main() { zobraz_zasobnik(&kalkulacka); } else { printf("no input\n"); - return 0; } break; case '/': { @@ -122,26 +127,21 @@ int main() { if (vyber(&kalkulacka, &a, &b)) { if (a == 0) { printf("division by zero\n"); - return 0; } else { vloz(&kalkulacka, b / a); zobraz_zasobnik(&kalkulacka); - printf("no input\n"); - return 0; } } else { printf("no input\n"); - return 0; } break; } default: printf("bad input\n"); - return 0; + break; } } else { printf("bad input\n"); - return 0; } }