test
This commit is contained in:
parent
5715573e8f
commit
0a71ff2d13
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user