This commit is contained in:
Weber 2024-10-14 13:19:38 +00:00
parent cb93144809
commit ec0761dd70

View File

@ -72,10 +72,6 @@ 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);
@ -95,54 +91,56 @@ int main() {
if (vloz(&kalkulacka, hodnota)) { if (vloz(&kalkulacka, hodnota)) {
zobraz_zasobnik(&kalkulacka); zobraz_zasobnik(&kalkulacka);
} }
} else if (sscanf(vstup, "%c", &operacia) == 1) { if (sscanf(vstup + snprintf(NULL, 0, "%.2f", hodnota), " %c", &operacia) == 1) {
if (!je_platna_operacia(operacia)) { switch (operacia) {
printf("bad input\n"); case '+':
return 0; if (scitat(&kalkulacka)) {
}
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); zobraz_zasobnik(&kalkulacka);
} else {
printf("no input\n"); printf("no input\n");
return 0; 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 { } else {
printf("no input\n"); printf("bad input\n");
return 0; return 0;
} }
} }