This commit is contained in:
Weber 2024-10-14 13:11:19 +00:00
parent cbcce07cc6
commit 94b2f80db7

View File

@ -58,7 +58,7 @@ bool delit(KalkulackaZasobnik *kalkulacka) {
float a, b; float a, b;
if (vyber(kalkulacka, &a, &b)) { if (vyber(kalkulacka, &a, &b)) {
if (a == 0) { if (a == 0) {
return false; // Delenie nulou return false;
} }
return vloz(kalkulacka, b / a); return vloz(kalkulacka, b / a);
} }
@ -72,6 +72,10 @@ void zobraz_zasobnik(KalkulackaZasobnik *kalkulacka) {
printf("\n"); printf("\n");
} }
bool je_platna_operacia(char operacia) {
return operacia == '+' || operacia == '-' || operacia == '*' || operacia == '/';
}
int main() { int main() {
KalkulackaZasobnik kalkulacka; KalkulackaZasobnik kalkulacka;
inicializuj(&kalkulacka); inicializuj(&kalkulacka);
@ -92,6 +96,10 @@ int main() {
zobraz_zasobnik(&kalkulacka); zobraz_zasobnik(&kalkulacka);
} }
} else if (sscanf(vstup, "%c", &operacia) == 1) { } else if (sscanf(vstup, "%c", &operacia) == 1) {
if (!je_platna_operacia(operacia)) {
printf("bad input\n");
return 0;
}
switch (operacia) { switch (operacia) {
case '+': case '+':
if (scitat(&kalkulacka)) { if (scitat(&kalkulacka)) {
@ -117,31 +125,16 @@ int main() {
return 0; return 0;
} }
break; break;
case '/': { case '/':
float a, b; if (!delit(&kalkulacka)) {
if (vyber(&kalkulacka, &a, &b)) {
if (a == 0) {
printf("division by zero\n"); printf("division by zero\n");
return 0; return 0;
} else { }
vloz(&kalkulacka, b / a);
zobraz_zasobnik(&kalkulacka); zobraz_zasobnik(&kalkulacka);
printf("no input\n");
return 0;
}
} else {
printf("no input\n");
return 0;
}
break; break;
} }
default:
printf("bad input\n");
return 0;
}
} else { } else {
zobraz_zasobnik(&kalkulacka); printf("no input\n");
printf("bad input\n");
return 0; return 0;
} }
} }