This commit is contained in:
Weber 2024-10-14 13:54:52 +00:00
parent 45727a1bc9
commit 884ed60648

View File

@ -1,6 +1,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
#include <string.h>
#define MAX_VELKOST 10
@ -77,6 +78,15 @@ 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
// Ak ukazovateľ koniec nesmeruje na '\0', vstup obsahuje neplatné znaky
return *koniec == '\n' || *koniec == '\0';
}
int main() {
KalkulackaZasobnik kalkulacka;
inicializuj(&kalkulacka);
@ -89,26 +99,14 @@ int main() {
break;
}
float hodnota;
char operacia;
char *zvysok;
if ((sscanf(vstup, "%f", &hodnota) == 1) && (strtok(vstup, " \n") != NULL)) {
// Kontrolujeme, či za číslom nie je ďalší neplatný vstup
if (strtok(NULL, " \n") == NULL) {
vloz(&kalkulacka, hodnota);
zobraz_zasobnik(&kalkulacka);
} else {
printf("bad input\n");
return 0;
}
if (je_platne_cislo(vstup)) {
float hodnota = strtof(vstup, NULL); // Prevedieme platné číslo
vloz(&kalkulacka, hodnota);
zobraz_zasobnik(&kalkulacka);
}
else if (strlen(vstup) == 2 && je_platna_operacia(vstup[0])) { // Kontrolujeme, či vstup je operácia
char operacia = vstup[0];
else if (sscanf(vstup, "%c", &operacia) == 1) {
if (!je_platna_operacia(operacia)) {
printf("bad input\n");
return 0;
}
switch (operacia) {
case '+':
if (scitat(&kalkulacka)) {
@ -143,9 +141,10 @@ int main() {
} else {
vloz(&kalkulacka, b / a);
zobraz_zasobnik(&kalkulacka);
printf("no input\n");
return 0;
}
} else {
printf("no input\n");
return 0;
}
break;
}