This commit is contained in:
Weber 2024-10-14 14:01:49 +00:00
parent 5715573e8f
commit 0a71ff2d13

View File

@ -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");